{"version":3,"sources":["webpack:///./node_modules/axios/dist/axios.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/core-js/internals/string-html-forced.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/modules/es.array.some.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/modules/es.date.to-string.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/modules/es.object.define-property.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/modules/es.string.link.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack:///./node_modules/date-fns/esm/_lib/assign/index.js","webpack:///./node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/add/index.js","webpack:///./node_modules/date-fns/esm/addBusinessDays/index.js","webpack:///./node_modules/date-fns/esm/addDays/index.js","webpack:///./node_modules/date-fns/esm/addHours/index.js","webpack:///./node_modules/date-fns/esm/addISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/addMinutes/index.js","webpack:///./node_modules/date-fns/esm/addMonths/index.js","webpack:///./node_modules/date-fns/esm/addQuarters/index.js","webpack:///./node_modules/date-fns/esm/addSeconds/index.js","webpack:///./node_modules/date-fns/esm/addWeeks/index.js","webpack:///./node_modules/date-fns/esm/addYears/index.js","webpack:///./node_modules/date-fns/esm/areIntervalsOverlapping/index.js","webpack:///./node_modules/date-fns/esm/closestIndexTo/index.js","webpack:///./node_modules/date-fns/esm/closestTo/index.js","webpack:///./node_modules/date-fns/esm/compareAsc/index.js","webpack:///./node_modules/date-fns/esm/compareDesc/index.js","webpack:///./node_modules/date-fns/esm/constants/index.js","webpack:///./node_modules/date-fns/esm/differenceInBusinessDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInHours/index.js","webpack:///./node_modules/date-fns/esm/differenceInISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack:///./node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInYears/index.js","webpack:///./node_modules/date-fns/esm/eachDayOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachHourOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachMonthOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachQuarterOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfMonth/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfYear/index.js","webpack:///./node_modules/date-fns/esm/eachYearOfInterval/index.js","webpack:///./node_modules/date-fns/esm/endOfDay/index.js","webpack:///./node_modules/date-fns/esm/endOfDecade/index.js","webpack:///./node_modules/date-fns/esm/endOfHour/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/endOfMinute/index.js","webpack:///./node_modules/date-fns/esm/endOfMonth/index.js","webpack:///./node_modules/date-fns/esm/endOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/endOfSecond/index.js","webpack:///./node_modules/date-fns/esm/endOfToday/index.js","webpack:///./node_modules/date-fns/esm/endOfTomorrow/index.js","webpack:///./node_modules/date-fns/esm/endOfWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfYear/index.js","webpack:///./node_modules/date-fns/esm/endOfYesterday/index.js","webpack:///./node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/date-fns/esm/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/formatDistanceStrict/index.js","webpack:///./node_modules/date-fns/esm/formatDistanceToNow/index.js","webpack:///./node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","webpack:///./node_modules/date-fns/esm/formatDuration/index.js","webpack:///./node_modules/date-fns/esm/formatISO/index.js","webpack:///./node_modules/date-fns/esm/formatISO9075/index.js","webpack:///./node_modules/date-fns/esm/formatISODuration/index.js","webpack:///./node_modules/date-fns/esm/formatRFC3339/index.js","webpack:///./node_modules/date-fns/esm/formatRFC7231/index.js","webpack:///./node_modules/date-fns/esm/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/fromUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getDate/index.js","webpack:///./node_modules/date-fns/esm/getDay/index.js","webpack:///./node_modules/date-fns/esm/getDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/getDaysInMonth/index.js","webpack:///./node_modules/date-fns/esm/getDaysInYear/index.js","webpack:///./node_modules/date-fns/esm/getDecade/index.js","webpack:///./node_modules/date-fns/esm/getHours/index.js","webpack:///./node_modules/date-fns/esm/getISODay/index.js","webpack:///./node_modules/date-fns/esm/getISOWeek/index.js","webpack:///./node_modules/date-fns/esm/getISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/getISOWeeksInYear/index.js","webpack:///./node_modules/date-fns/esm/getMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/getMinutes/index.js","webpack:///./node_modules/date-fns/esm/getMonth/index.js","webpack:///./node_modules/date-fns/esm/getOverlappingDaysInIntervals/index.js","webpack:///./node_modules/date-fns/esm/getQuarter/index.js","webpack:///./node_modules/date-fns/esm/getSeconds/index.js","webpack:///./node_modules/date-fns/esm/getTime/index.js","webpack:///./node_modules/date-fns/esm/getUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getWeek/index.js","webpack:///./node_modules/date-fns/esm/getWeekOfMonth/index.js","webpack:///./node_modules/date-fns/esm/getWeekYear/index.js","webpack:///./node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack:///./node_modules/date-fns/esm/getYear/index.js","webpack:///./node_modules/date-fns/esm/index.js","webpack:///./node_modules/date-fns/esm/intervalToDuration/index.js","webpack:///./node_modules/date-fns/esm/isAfter/index.js","webpack:///./node_modules/date-fns/esm/isBefore/index.js","webpack:///./node_modules/date-fns/esm/isDate/index.js","webpack:///./node_modules/date-fns/esm/isEqual/index.js","webpack:///./node_modules/date-fns/esm/isExists/index.js","webpack:///./node_modules/date-fns/esm/isFirstDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isFriday/index.js","webpack:///./node_modules/date-fns/esm/isFuture/index.js","webpack:///./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isLeapYear/index.js","webpack:///./node_modules/date-fns/esm/isMonday/index.js","webpack:///./node_modules/date-fns/esm/isPast/index.js","webpack:///./node_modules/date-fns/esm/isSameDay/index.js","webpack:///./node_modules/date-fns/esm/isSameHour/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/isSameMinute/index.js","webpack:///./node_modules/date-fns/esm/isSameMonth/index.js","webpack:///./node_modules/date-fns/esm/isSameQuarter/index.js","webpack:///./node_modules/date-fns/esm/isSameSecond/index.js","webpack:///./node_modules/date-fns/esm/isSameWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameYear/index.js","webpack:///./node_modules/date-fns/esm/isSaturday/index.js","webpack:///./node_modules/date-fns/esm/isSunday/index.js","webpack:///./node_modules/date-fns/esm/isThisHour/index.js","webpack:///./node_modules/date-fns/esm/isThisISOWeek/index.js","webpack:///./node_modules/date-fns/esm/isThisMinute/index.js","webpack:///./node_modules/date-fns/esm/isThisMonth/index.js","webpack:///./node_modules/date-fns/esm/isThisQuarter/index.js","webpack:///./node_modules/date-fns/esm/isThisSecond/index.js","webpack:///./node_modules/date-fns/esm/isThisWeek/index.js","webpack:///./node_modules/date-fns/esm/isThisYear/index.js","webpack:///./node_modules/date-fns/esm/isThursday/index.js","webpack:///./node_modules/date-fns/esm/isToday/index.js","webpack:///./node_modules/date-fns/esm/isTomorrow/index.js","webpack:///./node_modules/date-fns/esm/isTuesday/index.js","webpack:///./node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/date-fns/esm/isWednesday/index.js","webpack:///./node_modules/date-fns/esm/isWeekend/index.js","webpack:///./node_modules/date-fns/esm/isWithinInterval/index.js","webpack:///./node_modules/date-fns/esm/isYesterday/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfDecade/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/lightFormat/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/date-fns/esm/max/index.js","webpack:///./node_modules/date-fns/esm/min/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack:///./node_modules/date-fns/esm/parse/index.js","webpack:///./node_modules/date-fns/esm/parseISO/index.js","webpack:///./node_modules/date-fns/esm/parseJSON/index.js","webpack:///./node_modules/date-fns/esm/roundToNearestMinutes/index.js","webpack:///./node_modules/date-fns/esm/set/index.js","webpack:///./node_modules/date-fns/esm/setDate/index.js","webpack:///./node_modules/date-fns/esm/setDay/index.js","webpack:///./node_modules/date-fns/esm/setDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/setHours/index.js","webpack:///./node_modules/date-fns/esm/setISODay/index.js","webpack:///./node_modules/date-fns/esm/setISOWeek/index.js","webpack:///./node_modules/date-fns/esm/setISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/setMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/setMinutes/index.js","webpack:///./node_modules/date-fns/esm/setMonth/index.js","webpack:///./node_modules/date-fns/esm/setQuarter/index.js","webpack:///./node_modules/date-fns/esm/setSeconds/index.js","webpack:///./node_modules/date-fns/esm/setWeek/index.js","webpack:///./node_modules/date-fns/esm/setWeekYear/index.js","webpack:///./node_modules/date-fns/esm/setYear/index.js","webpack:///./node_modules/date-fns/esm/startOfDay/index.js","webpack:///./node_modules/date-fns/esm/startOfDecade/index.js","webpack:///./node_modules/date-fns/esm/startOfHour/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfMinute/index.js","webpack:///./node_modules/date-fns/esm/startOfMonth/index.js","webpack:///./node_modules/date-fns/esm/startOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/startOfSecond/index.js","webpack:///./node_modules/date-fns/esm/startOfToday/index.js","webpack:///./node_modules/date-fns/esm/startOfTomorrow/index.js","webpack:///./node_modules/date-fns/esm/startOfWeek/index.js","webpack:///./node_modules/date-fns/esm/startOfWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfYear/index.js","webpack:///./node_modules/date-fns/esm/startOfYesterday/index.js","webpack:///./node_modules/date-fns/esm/sub/index.js","webpack:///./node_modules/date-fns/esm/subBusinessDays/index.js","webpack:///./node_modules/date-fns/esm/subDays/index.js","webpack:///./node_modules/date-fns/esm/subHours/index.js","webpack:///./node_modules/date-fns/esm/subISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/subMinutes/index.js","webpack:///./node_modules/date-fns/esm/subMonths/index.js","webpack:///./node_modules/date-fns/esm/subQuarters/index.js","webpack:///./node_modules/date-fns/esm/subSeconds/index.js","webpack:///./node_modules/date-fns/esm/subWeeks/index.js","webpack:///./node_modules/date-fns/esm/subYears/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./node_modules/flatpickr/dist/flatpickr.js","webpack:///./node_modules/instafeed.js/dist/instafeed.js","webpack:///./node_modules/konva/konva.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/svgxuse/svgxuse.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/vue-add-to-calendar/dist/vue-add-to-calendar.common.js","webpack:///./node_modules/vue-cookies/vue-cookies.js","webpack:///./node_modules/vue-flatpickr-component/dist/vue-flatpickr.min.js","webpack:///./node_modules/vue-ics/dist/vue-ics.esm.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/vue-slick-carousel/dist/vue-slick-carousel.umd.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue/dist/vue.js"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA,IAAI,IAAyD;AAC7D;AACA,MAAM,EAKsB;AAC5B,CAAC;AACD,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS,GAAG,SAAS;AAC7C,4BAA4B;AAC5B;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,iCAAiC;AACjC,MAAM;AACN;AACA;AACA;;AAEA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA,MAAM;AACN;AACA,EAAE;;AAEF;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA,MAAM;AACN;AACA,EAAE;;AAEF;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR,MAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC,wCAAwC;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY,cAAc;AAC1B,YAAY,MAAM;AAClB,YAAY,eAAe;AAC3B,cAAc,EAAE;AAChB;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,QAAQ,YAAY;AACpB;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY,MAAM;AAClB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,eAAe;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C;AAC3C,UAAU;;AAEV;AACA,6DAA6D,wBAAwB;AACrF;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,mCAAmC;AACnC,gCAAgC,aAAa,EAAE;AAC/C;AACA;AACA,MAAM;AACN;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;;AAEJ;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,YAAY,SAAS;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,CAAC;AACD;AACA,8B;;;;;;;;;;;;AClrDA,iBAAiB,mBAAO,CAAC,sDAAa,E;;;;;;;;;;;;ACAzB;;AAEb,YAAY,mBAAO,CAAC,qDAAY;AAChC,aAAa,mBAAO,CAAC,iEAAkB;AACvC,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,oBAAoB,mBAAO,CAAC,6EAAuB;AACnD,mBAAmB,mBAAO,CAAC,mFAA2B;AACtD,sBAAsB,mBAAO,CAAC,yFAA8B;AAC5D,kBAAkB,mBAAO,CAAC,yEAAqB;;AAE/C;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;AAC5C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,mBAAO,CAAC,yEAAsB;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;ACnLa;;AAEb,YAAY,mBAAO,CAAC,kDAAS;AAC7B,WAAW,mBAAO,CAAC,gEAAgB;AACnC,YAAY,mBAAO,CAAC,4DAAc;AAClC,kBAAkB,mBAAO,CAAC,wEAAoB;AAC9C,eAAe,mBAAO,CAAC,wDAAY;;AAEnC;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe,mBAAO,CAAC,kEAAiB;AACxC,oBAAoB,mBAAO,CAAC,4EAAsB;AAClD,iBAAiB,mBAAO,CAAC,sEAAmB;;AAE5C;AACA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,oEAAkB;;AAEzC;;AAEA;AACA;;;;;;;;;;;;;ACpDa;;AAEb;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;;AClBa;;AAEb,aAAa,mBAAO,CAAC,2DAAU;;AAE/B;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACxDa;;AAEb;AACA;AACA;;;;;;;;;;;;;ACJa;;AAEb,YAAY,mBAAO,CAAC,qDAAY;AAChC,eAAe,mBAAO,CAAC,yEAAqB;AAC5C,yBAAyB,mBAAO,CAAC,iFAAsB;AACvD,sBAAsB,mBAAO,CAAC,2EAAmB;AACjD,kBAAkB,mBAAO,CAAC,mEAAe;;AAEzC;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;;;;;;;;;;;;;AC7Fa;;AAEb,YAAY,mBAAO,CAAC,qDAAY;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;;ACnDa;;AAEb,oBAAoB,mBAAO,CAAC,mFAA0B;AACtD,kBAAkB,mBAAO,CAAC,+EAAwB;;AAElD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnBa;;AAEb,mBAAmB,mBAAO,CAAC,qEAAgB;;AAE3C;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjBa;;AAEb,YAAY,mBAAO,CAAC,qDAAY;AAChC,oBAAoB,mBAAO,CAAC,uEAAiB;AAC7C,eAAe,mBAAO,CAAC,uEAAoB;AAC3C,eAAe,mBAAO,CAAC,yDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;;;;;;;;;;;;AC9Ea;;AAEb;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzCa;;AAEb,YAAY,mBAAO,CAAC,mDAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;;ACxEa;;AAEb,kBAAkB,mBAAO,CAAC,mEAAe;;AAEzC;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxBa;;AAEb,YAAY,mBAAO,CAAC,qDAAY;;AAEhC;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;;ACnBA,+CAAa;;AAEb,YAAY,mBAAO,CAAC,kDAAS;AAC7B,0BAA0B,mBAAO,CAAC,8FAA+B;;AAEjE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,gEAAgB;AACtC,GAAG;AACH;AACA,cAAc,mBAAO,CAAC,iEAAiB;AACvC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO,YAAY;AACnB;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;;;AChGa;;AAEb;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACVa;;AAEb,YAAY,mBAAO,CAAC,qDAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACtEa;;AAEb;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACba;;AAEb,YAAY,mBAAO,CAAC,qDAAY;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C;AAC1C,SAAS;;AAET;AACA,4DAA4D,wBAAwB;AACpF;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,kCAAkC;AAClC,+BAA+B,aAAa,EAAE;AAC9C;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;ACpDa;;AAEb;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACba;;AAEb,YAAY,mBAAO,CAAC,qDAAY;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;ACnEa;;AAEb,YAAY,mBAAO,CAAC,mDAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;ACXa;;AAEb,YAAY,mBAAO,CAAC,qDAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,eAAe;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;;ACpDa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1Ba;;AAEb,WAAW,mBAAO,CAAC,gEAAgB;;AAEnC;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS,GAAG,SAAS;AAC5C,2BAA2B;AAC3B;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC;AAChC,KAAK;AACL;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACvVa;AACb,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AChBa;AACb,eAAe,mBAAO,CAAC,yFAA8B;AACrD,0BAA0B,mBAAO,CAAC,uGAAqC;AACvE,8BAA8B,mBAAO,CAAC,iHAA0C;;AAEhF;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACZY;AACb,WAAW,mBAAO,CAAC,qGAAoC;AACvD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,mCAAmC,mBAAO,CAAC,2HAA+C;AAC1F,4BAA4B,mBAAO,CAAC,2GAAuC;AAC3E,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,qBAAqB,mBAAO,CAAC,yFAA8B;AAC3D,wBAAwB,mBAAO,CAAC,iGAAkC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mCAAmC;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,eAAe;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxCA,WAAW,mBAAO,CAAC,qGAAoC;AACvD,oBAAoB,mBAAO,CAAC,uFAA6B;AACzD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,yBAAyB,mBAAO,CAAC,mGAAmC;;AAEpE;;AAEA,qBAAqB,qDAAqD;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,eAAe;AACzB;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,8BAA8B;AAC9B,+BAA+B;AAC/B,+BAA+B;AAC/B,2CAA2C;AAC3C,SAAS,iCAAiC;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChEA,YAAY,mBAAO,CAAC,qEAAoB;AACxC,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,iBAAiB,mBAAO,CAAC,6FAAgC;;AAEzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,GAAG;AACH;;;;;;;;;;;;AClBA,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,oBAAoB,mBAAO,CAAC,uFAA6B;AACzD,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uCAAuC;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvCA,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACnBA,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK,YAAY;AACjB,GAAG;AACH;;;;;;;;;;;;ACdA,6BAA6B,mBAAO,CAAC,2GAAuC;;AAE5E;;AAEA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;;;;;;;;;;;;;ACXa;AACb,kBAAkB,mBAAO,CAAC,mFAA2B;AACrD,2BAA2B,mBAAO,CAAC,uGAAqC;AACxE,+BAA+B,mBAAO,CAAC,+GAAyC;;AAEhF;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClCA,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,qBAAqB,mBAAO,CAAC,yGAAsC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChBA,cAAc,mBAAO,CAAC,iFAA0B;;AAEhD;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,cAAc,mBAAO,CAAC,iFAA0B;AAChD,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACXA,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACNA,YAAY,mBAAO,CAAC,qEAAoB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;ACTa;AACb,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,6BAA6B,mBAAO,CAAC,2GAAuC;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM;AACd;AACA;;;;;;;;;;;;ACbA,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,kBAAkB,mBAAO,CAAC,iFAA0B;;AAEpD;AACA;AACA;;AAEA,sBAAsB,gDAAgD;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3BA,cAAc,mBAAO,CAAC,iFAA0B;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACTA;AACA;AACA;;;;;;;;;;;;;ACFa;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,YAAY,mBAAO,CAAC,qEAAoB;AACxC,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,qBAAqB,mBAAO,CAAC,yFAA8B;AAC3D,yBAAyB,mBAAO,CAAC,mGAAmC;AACpE,mCAAmC,mBAAO,CAAC,2HAA+C;AAC1F,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,iBAAiB,mBAAO,CAAC,6FAAgC;;AAEzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG,+CAA+C;AAClD,gCAAgC;AAChC;AACA;AACA;AACA;AACA,2CAA2C,YAAY;AACvD;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AC3DD,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,WAAW,mBAAO,CAAC,+EAAyB;AAC5C,uBAAuB,mBAAO,CAAC,+FAAiC;;AAEhE;AACA;AACA,GAAG,+BAA+B;AAClC;AACA,CAAC;;AAED;AACA;;;;;;;;;;;;;ACXa;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,cAAc,mBAAO,CAAC,yFAA8B;AACpD,mCAAmC,mBAAO,CAAC,2HAA+C;AAC1F,8BAA8B,mBAAO,CAAC,iHAA0C;;AAEhF;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,gFAAgF;AACnF;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACjBY;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,YAAY,mBAAO,CAAC,yFAA8B;AAClD,uBAAuB,mBAAO,CAAC,+FAAiC;AAChE,8BAA8B,mBAAO,CAAC,iHAA0C;;AAEhF;AACA;;AAEA;;AAEA;AACA,4CAA4C,qBAAqB,EAAE;;AAEnE;AACA;AACA,GAAG,uEAAuE;AAC1E;AACA;AACA;AACA,CAAC;;AAED;AACA;;;;;;;;;;;;;ACvBa;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,cAAc,mBAAO,CAAC,uFAA6B;;AAEnD;AACA;AACA,GAAG,8DAA8D;AACjE;AACA,CAAC;;;;;;;;;;;;ACRD,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,WAAW,mBAAO,CAAC,+EAAyB;AAC5C,kCAAkC,mBAAO,CAAC,uHAA6C;;AAEvF;AACA;AACA,CAAC;;AAED;AACA;AACA,GAAG,2DAA2D;AAC9D;AACA,CAAC;;;;;;;;;;;;;ACZY;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,gBAAgB,mBAAO,CAAC,uFAA6B;AACrD,uBAAuB,mBAAO,CAAC,+FAAiC;AAChE,8BAA8B,mBAAO,CAAC,iHAA0C;;AAEhF,yDAAyD,wBAAwB;;AAEjF;AACA;AACA,GAAG,wDAAwD;AAC3D;AACA;AACA;AACA,CAAC;;AAED;AACA;;;;;;;;;;;;;ACjBa;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,oBAAoB,mBAAO,CAAC,uFAA6B;AACzD,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,0BAA0B,mBAAO,CAAC,uGAAqC;;AAEvE;;AAEA;AACA;;AAEA;AACA;AACA,GAAG,sEAAsE;AACzE;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACjBY;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,WAAW,mBAAO,CAAC,yFAA8B;AACjD,mCAAmC,mBAAO,CAAC,2HAA+C;AAC1F,8BAA8B,mBAAO,CAAC,iHAA0C;;AAEhF;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,gFAAgF;AACnF;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACjBY;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,cAAc,mBAAO,CAAC,mFAA2B;AACjD,0BAA0B,mBAAO,CAAC,uGAAqC;AACvE,8BAA8B,mBAAO,CAAC,iHAA0C;;AAEhF;AACA,wDAAwD,OAAO;;AAE/D;AACA;AACA,GAAG,0EAA0E;AAC7E;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACfY;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,qBAAqB,mBAAO,CAAC,yFAA8B;AAC3D,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,mCAAmC,mBAAO,CAAC,2HAA+C;AAC1F,8BAA8B,mBAAO,CAAC,iHAA0C;;AAEhF;AACA,uDAAuD,8BAA8B;;AAErF;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,gFAAgF;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AChDY;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,YAAY,mBAAO,CAAC,yFAA8B;AAClD,0BAA0B,mBAAO,CAAC,uGAAqC;AACvE,8BAA8B,mBAAO,CAAC,iHAA0C;;AAEhF;AACA;;AAEA;AACA;AACA,GAAG,0EAA0E;AAC7E;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACfY;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,YAAY,mBAAO,CAAC,qEAAoB;AACxC,0BAA0B,mBAAO,CAAC,uGAAqC;;AAEvE;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;;AAEA;AACA;AACA,GAAG,+CAA+C;AAClD;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AC/BD,eAAe,mBAAO,CAAC,2EAAuB;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;AChBA,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,qBAAqB,mBAAO,CAAC,uGAAqC;;AAElE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;ACrBa;AACb,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,UAAU,mBAAO,CAAC,iEAAkB;AACpC,cAAc,mBAAO,CAAC,iFAA0B;AAChD,wBAAwB,mBAAO,CAAC,iGAAkC;AAClE,kBAAkB,mBAAO,CAAC,mFAA2B;AACrD,YAAY,mBAAO,CAAC,qEAAoB;AACxC,aAAa,mBAAO,CAAC,qFAA4B;AACjD,0BAA0B,mBAAO,CAAC,qHAA4C;AAC9E,+BAA+B,mBAAO,CAAC,+HAAiD;AACxF,qBAAqB,mBAAO,CAAC,uGAAqC;AAClE,WAAW,mBAAO,CAAC,iFAA0B;;AAE7C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD,KAAK;AACL;AACA,oCAAoC,cAAc,OAAO;AACzD,qCAAqC,cAAc,OAAO;AAC1D;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,qCAAqC,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7Ea;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,aAAa,mBAAO,CAAC,qFAA4B;AACjD,YAAY,mBAAO,CAAC,qEAAoB;;AAExC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,CAAC;;AAED;AACA;AACA,GAAG,gDAAgD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;;;;;AC7HD,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,iCAAiC,mBAAO,CAAC,uGAAqC;;AAE9E;AACA;AACA,GAAG,yEAAyE;AAC5E;AACA,CAAC;;;;;;;;;;;;ACRD,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,YAAY,mBAAO,CAAC,qEAAoB;;AAExC,6CAA6C,eAAe,EAAE;;AAE9D;AACA;AACA,GAAG,4DAA4D;AAC/D;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACbY;AACb,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,YAAY,mBAAO,CAAC,qEAAoB;AACxC,YAAY,mBAAO,CAAC,mFAA2B;;AAE/C;AACA;AACA;;AAEA,qCAAqC,6BAA6B,0BAA0B,YAAY,EAAE;AAC1G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,GAAG,eAAe;AACrB;;;;;;;;;;;;;ACxBa;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,iBAAiB,mBAAO,CAAC,mFAA2B;AACpD,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,2BAA2B,mBAAO,CAAC,yGAAsC;;AAEzE;AACA;AACA,GAAG,2EAA2E;AAC9E;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACbY;AACb,aAAa,mBAAO,CAAC,2FAA+B;AACpD,0BAA0B,mBAAO,CAAC,uFAA6B;AAC/D,qBAAqB,mBAAO,CAAC,yFAA8B;;AAE3D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,UAAU;AACV,CAAC;;;;;;;;;;;;;AC5BY;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,6BAA6B,mBAAO,CAAC,+FAAiC;;AAEtE;AACA;AACA,GAAG,wEAAwE;AAC3E;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACXY;AACb,oCAAoC,mBAAO,CAAC,+HAAiD;AAC7F,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,yBAAyB,mBAAO,CAAC,iGAAkC;AACnE,yBAAyB,mBAAO,CAAC,mGAAmC;AACpE,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,qBAAqB,mBAAO,CAAC,mGAAmC;AAChE,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,YAAY,mBAAO,CAAC,qEAAoB;;AAExC;AACA;AACA;;AAEA;AACA,qCAAqC,iCAAiC,EAAE;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACrID,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,mBAAmB,mBAAO,CAAC,qFAA4B;AACvD,cAAc,mBAAO,CAAC,uFAA6B;AACnD,kCAAkC,mBAAO,CAAC,uHAA6C;;AAEvF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;ACdA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,mBAAmB,mBAAO,CAAC,qFAA4B;AACvD,2BAA2B,mBAAO,CAAC,yFAA8B;AACjE,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChCA,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,gBAAgB,mBAAO,CAAC,6FAAgC;;AAExD;AACA,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,GAAG,yCAAyC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC3BY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;;AAEA;AACA,4CAA4C,qBAAqB;AACjE;;AAEA;AACA,KAAK;AACL,IAAI;AACJ;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,iBAAiB;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,qBAAqB;AACzC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,8BAA8B;;AAE9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA,qDAAqD,cAAc;AACnE;AACA,C;;;;;;;;;;;;AC7FA;AAAA;AAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACTA;AAAA;AAAe;AACf;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAwC;AACzB;AACf,SAAS,gEAAM,GAAG;AAClB,C;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0D;AACW;AACJ;AACQ;AACd;AACQ;AACN;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA,OAAO;AACP;;AAEA,WAAW,iEAAe;AAC1B,GAAG;AACH;AACA;AACA,yBAAyB,4EAAc,gBAAgB;;AAEvD,4EAA4E;;AAE5E;AACA;AACA,aAAa,yEAAe;AAC5B,KAAK;;;AAGL;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA,sBAAsB,+EAAiB,OAAO;;AAE9C,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yEAAe;AAC9B;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yEAAe;AAC9B;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iEAAe;AAC9B;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yEAAe;AAC9B;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA,eAAe,wEAAU;;AAEzB;AACA;AACA;AACA,OAAO;AACP;;AAEA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA,kBAAkB,2EAAa;;AAE/B;AACA;AACA;AACA,OAAO;AACP;;AAEA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,WAAW,iEAAe;AAC1B,GAAG;AACH;AACA;AACA,oBAAoB,6EAAe;;AAEnC;AACA;AACA;AACA,OAAO;AACP;;AAEA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yEAAe;AAC9B;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yEAAe;AAC9B;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yEAAe;AAC9B;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,WAAW,iEAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,WAAW,iEAAe;AAC1B,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,WAAW,iEAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,WAAW,iEAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,iEAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,yEAAe;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,yEAAe;AAC3D;;AAEA;AACA;AACA;AACA,kBAAkB,yEAAe;AACjC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,yEAAe;AAC7B,gBAAgB,yEAAe;AAC/B;AACA;;AAEe,yEAAU,E;;;;;;;;;;;;ACv1BzB;AAAA;AAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA,+CAA+C,yEAAe;AAC9D,GAAG;AACH;AACA;AACA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA,WAAW,yEAAe;AAC1B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,WAAW,yEAAe;AAC1B;AACA;AACe,yEAAU,E;;;;;;;;;;;;ACjFzB;AAAA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,mCAAmC,MAAM,0DAA0D,MAAM;AACzG;;AAEA;AACA;AACA;AACA;AACe,6EAAc,E;;;;;;;;;;;;AC/F7B;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AAA2C;AACS;AACpD,mCAAmC;AACnC;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2C;AACmB;AACQ;AAClB;AACpD,qCAAqC;AACrC;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,gEAAM;AACnB,aAAa,2EAAiB,mBAAmB,+EAAqB,iBAAiB;AACvF;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAA2C;AACmB;AACV;AACpD;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA,wBAAwB,2EAAiB;AACzC;AACA;AACA;AACA,wBAAwB,2EAAiB;;AAEzC;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2C;AACa;AACQ;AACZ;AACpD,qCAAqC;AACrC;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,gEAAM;AACnB,aAAa,wEAAc,4BAA4B,4EAAkB,0BAA0B;AACnG;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACH;AACa;AACJ;AACpD;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA,+EAA+E,mEAAS;AACxF,qGAAqG,mEAAS,gCAAgC;;AAE9I;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,wEAAc;AACtC;AACA;AACA;AACA,wBAAwB,wEAAc;;AAEtC;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;;;;;;ACpCA;AAAA;AAAA;AAAA;AAAA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA,4EAA4E;AAC5E,GAAG;AACH,wEAAwE;AACxE,GAAG;AACH,kFAAkF;AAClF,GAAG;AACH,oFAAoF;AACpF;AACA,C;;;;;;;;;;;;AClBA;AAAA;AAAe;AACf;AACA;AACA;AACA,C;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACH;AACS;AACpD;;AAEe;AACf,EAAE,sEAAY;AACd;AACA;AACA;AACA,6DAA6D,mEAAS;AACtE,0EAA0E,mEAAS,uBAAuB;;AAE1G;AACA;AACA;;AAEA,aAAa,gEAAM;AACnB,YAAY,mEAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACH;AACS;AACpD;;AAEe;AACf,EAAE,sEAAY;AACd,YAAY,mEAAS;;AAErB;AACA;AACA;;AAEA;AACA,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACH;AACW;AACF;AACpD;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,gEAAM;AACnB,gBAAgB,mEAAS;AACzB,aAAa,uEAAa;AAC1B;AACA;AACA,C;;;;;;;;;;;;ACbA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACH;AACK;AACI;AACpD;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,gEAAM;AACnB,aAAa,mEAAS;AACtB,aAAa,oEAAU;AACvB;AACA;AACA,C;;;;;;;;;;;;ACbA;AAAA;AAAA;AAAA;AAA2C;AACS;AACpD;;AAEe;AACf,EAAE,sEAAY;AACd;AACA,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACbA;AAAA;AAAA;AAAA;AAAA;AAA8D;AACA;AACV;AACpD;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,2EAAiB;AAC9B;AACA;AACA;AACA,aAAa,2EAAiB;AAC9B;AACA,C;;;;;;;;;;;;ACbA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACH;AACS;AACpD;;AAEe;AACf,EAAE,sEAAY;AACd;AACA;AACA;AACA,6DAA6D,mEAAS;AACtE,0EAA0E,mEAAS,uBAAuB;;AAE1G;AACA;AACA;;AAEA,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACvBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACU;AACA;AACJ;AACpD;;AAEe;AACf,EAAE,sEAAY;AACd;AACA;AACA;AACA,+EAA+E,mEAAS;AACxF,qGAAqG,mEAAS;AAC9G,aAAa,wEAAc;AAC3B;AACA;AACA;AACA,aAAa,wEAAc;AAC3B;AACA,C;;;;;;;;;;;;ACnBA;AAAA;AAAe;AACf;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACI;AACN;AACiB;AACN;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,oCAAoC,uEAAS;AAC7C,sCAAsC,uEAAS;AAC/C,oCAAoC,uEAAS;AAC7C,kCAAkC,uEAAS;AAC3C,oCAAoC,uEAAS;AAC7C,wCAAwC,uEAAS;AACjD,wCAAwC,uEAAS,uBAAuB;;AAExE,aAAa,gEAAM;AACnB,yCAAyC,mEAAS,mCAAmC;;AAErF,qCAAqC,iEAAO,oDAAoD;;AAEhG;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AClEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACN;AACW;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,eAAe,uEAAS;AACxB;AACA;AACA;AACA,kBAAkB,uEAAS;AAC3B,+CAA+C;;AAE/C,sCAAsC;;AAEtC;AACA;AACA,SAAS,mEAAS;AAClB,GAAG;;;AAGH;AACA;AACA,C;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,eAAe,uEAAS;;AAExB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;;AC1CA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACO;AACD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,yEAAe;AACxB,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACK;AACA;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,wEAAc,YAAY,wEAAc;AACjD,C;;;;;;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,kBAAkB,gEAAM;AACxB,eAAe,uEAAS;AACxB;AACA,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACO;AACD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,yEAAe;AACxB,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,eAAe,uEAAS;;AAExB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACpEA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACL;AACW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB;AACA,SAAS,mEAAS;AAClB,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACO;AACD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,yEAAe;AACxB,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACT;AACe;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB;AACA,SAAS,iEAAO;AAChB,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACL;AACW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,mEAAS;AAClB,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAA2D;AACnE,QAAQ;AACR;AACA;AACA;AACA,WAAW,SAAS,8DAA8D;AAClF,WAAW,SAAS,gEAAgE;AACpF,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA,MAAM,2DAA2D;AACjE,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2DAA2D;AACjE,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2DAA2D;AACjE,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2DAA2D;AACjE,MAAM;AACN;AACA;AACA;AACA,MAAM,2DAA2D;AACjE,MAAM,2DAA2D;AACjE,MAAM;AACN;AACA;AACA;;AAEe;AACf;AACA,EAAE,0EAAY;AACd;AACA;AACA,sBAAsB,gEAAM;AAC5B,oBAAoB,gEAAM;AAC1B,uBAAuB,gEAAM;AAC7B,qBAAqB,gEAAM,8BAA8B;;AAEzD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;AC/GA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,gBAAgB;AAC3B,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,sBAAsB,gEAAM;;AAE5B;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA,oBAAoB;AACpB,GAAG;AACH,iCAAiC;AACjC,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,gEAAM;;AAE5B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,C;;;;;;;;;;;;ACxEA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,gBAAgB;AAC3B,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,sBAAsB,gEAAM;;AAE5B;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA,oBAAoB;AACpB,GAAG;AACH,iCAAiC;AACjC,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,gEAAM;;AAE5B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,C;;;;;;;;;;;;ACtEA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB;;AAEA;AACA;AACA,GAAG;AACH,aAAa,0BAA0B;AACvC,GAAG;AACH;AACA;AACA,C;;;;;;;;;;;;ACpDA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB;;AAEA;AACA;AACA,GAAG;AACH,aAAa,0BAA0B;AACvC,GAAG;AACH;AACA;AACA,C;;;;;;;;;;;;ACpDA;AAAA;AAAA;AAAA;AACA;AACA;AACA,WAAW;AACX;AACA;AACO;AACP;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEO,uB;;;;;;;;;;;;ACdP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACI;AACN;AACoC;AAClC;AACI;AACK;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB,OAAO,iEAAO,eAAe,iEAAO;AACpC,2BAA2B,kFAAwB;AACnD;AACA,cAAc,uEAAS;AACvB;AACA,cAAc,iEAAO,uBAAuB;;AAE5C,UAAU,mEAAS;AACnB;AACA,cAAc,mEAAS;AACvB,gBAAgB,iEAAO;AACvB;;AAEA;AACA,C;;;;;;;;;;;;ACpDA;AAAA;AAAA;AAAA;AAAA;AAA+F;AAC/C;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,uBAAuB,oEAAU;AACjC,wBAAwB,oEAAU;AAClC,iDAAiD,6FAA+B;AAChF,mDAAmD,6FAA+B,kBAAkB;AACpG;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACjDA;AAAA;AAAA;AAAA;AAAwD;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,wEAAc,kBAAkB,wEAAc;AACvD,C;;;;;;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAA+F;AACvC;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,2BAA2B,wEAAc;AACzC,4BAA4B,wEAAc;AAC1C,qDAAqD,6FAA+B;AACpF,uDAAuD,6FAA+B,sBAAsB;AAC5G;AACA;;AAEA;AACA,C;;;;;;;;;;;;AC1CA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB;AACA;AACA;AACA,C;;;;;;;;;;;;ACnCA;AAAA;AAAA;AAAA;AAAA;AAAgD;AACR;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB;AACA,oBAAoB,oEAAU,aAAa,oEAAU;AACrD;AACA,C;;;;;;;;;;;;ACpCA;AAAA;AAAA;AAAA;AAAA;AAAkD;AAC6C;AACtC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,wBAAwB,qEAAW;AACnC,yBAAyB,qEAAW;AACpC,kDAAkD,6FAA+B;AACjF,oDAAoD,6FAA+B,mBAAmB;AACtG;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACtDA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB;AACA,C;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACoC;AACnB;AACzD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH,aAAa,0BAA0B;AACvC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB;AACA,4BAA4B,kFAAwB;AACpD,2DAA2D;AAC3D;;AAEA;AACA,sDAAsD;;AAEtD;AACA,C;;;;;;;;;;;;ACtFA;AAAA;AAAA;AAAA;AAA4E;AACnB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,kFAAwB;AACrC;AACA,C;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACoD;AAC5C;AACU;AACD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB,aAAa,oEAAU;AACvB,4BAA4B,0FAAgC;AAC5D,aAAa,yEAAe,8BAA8B;AAC1D;AACA;;AAEA,iCAAiC,oEAAU;AAC3C,8DAA8D;;AAE9D;AACA,C;;;;;;;;;;;;ACpDA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB;AACA,C;;;;;;;;;;;;AClCA;AAAA;AAAA;AAAA;AAA4E;AACnB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,kFAAwB;AACrC;AACA,C;;;;;;;;;;;;ACzCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACwC;AAChC;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB,aAAa,oEAAU;AACvB,4BAA4B,oFAA0B;AACtD,6DAA6D;AAC7D;;AAEA,2BAA2B,oEAAU;AACrC,wDAAwD;;AAExD;AACA,C;;;;;;;;;;;;ACxCA;AAAA;AAAA;AAAA;AAAgE;AACP;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,4EAAkB;AAC/B;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAA4E;AACnB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,kFAAwB;AACrC;AACA,C;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAA4D;AACH;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,0EAAgB;AAC7B;AACA,C;;;;;;;;;;;;AClDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACsC;AAC9B;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB,aAAa,oEAAU;AACvB,4BAA4B,mFAAyB,uBAAuB;AAC5E;;AAEA;AACA,gCAAgC;AAChC;;AAEA,0BAA0B,oEAAU;AACpC,uDAAuD;;AAEvD;AACA,C;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,WAAW,SAAS,yCAAyC;AAC7D,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,kBAAkB,gEAAM;AACxB,gBAAgB,gEAAM;AACtB,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,gEAAM;AACrB;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACxFA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACJ;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS,yCAAyC;AAC7D,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,kBAAkB,gEAAM;AACxB,gBAAgB,gEAAM;AACtB;AACA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,gEAAM;AACrB,kBAAkB,kEAAQ;AAC1B;;AAEA;AACA,C;;;;;;;;;;;;AC1DA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS,yCAAyC;AAC7D,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,kBAAkB,gEAAM;AACxB,gBAAgB,gEAAM;AACtB,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe,gEAAM;AACrB;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACvDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkD;AACM;AAChB;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS,yCAAyC;AAC7D,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,kBAAkB,gEAAM;AACxB,gBAAgB,gEAAM;AACtB,kCAAkC;;AAElC;AACA;AACA;;AAEA,yBAAyB,wEAAc;AACvC,uBAAuB,wEAAc;AACrC;AACA;AACA;;AAEA;AACA,kBAAkB,gEAAM;AACxB,qBAAqB,qEAAW;AAChC;;AAEA;AACA,C;;;;;;;;;;;;ACtDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACM;AACV;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS,yCAAyC;AAC7D,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,kBAAkB,gEAAM;AACxB,gBAAgB,gEAAM;AACtB,kCAAkC;;AAElC;AACA;AACA;;AAEA,sBAAsB,qEAAW;AACjC,oBAAoB,qEAAW,mBAAmB;;AAElD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,gEAAM;AACrB,kBAAkB,kEAAQ;AAC1B;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACxEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8D;AAClB;AACE;AACW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS,+CAA+C;AACnE,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,qBAAqB,2EAAiB;AACtC;AACA;;AAEA;AACA;;AAEA,QAAQ,mEAAS;AACjB;AACA,UAAU,kEAAQ;AAClB;AACA;;AAEA;AACA,C;;;;;;;;;;;;AChDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsE;AAClB;AACJ;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,kBAAkB,sEAAY;AAC9B;AACA,gBAAgB,oEAAU;AAC1B,SAAS,+EAAqB;AAC9B;AACA;AACA,GAAG;AACH,C;;;;;;;;;;;;ACzCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsE;AACpB;AACJ;AACW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,kBAAkB,qEAAW;AAC7B;AACA,gBAAgB,mEAAS;AACzB,SAAS,+EAAqB;AAC9B;AACA;AACA,GAAG;AACH,C;;;;;;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS,yCAAyC;AAC7D,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,kBAAkB,gEAAM;AACxB,gBAAgB,gEAAM;AACtB,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe,gEAAM;AACrB;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACpDA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM,iEAAiE;AAClF,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACnCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAA8C;AACW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,mEAAS;AAClB;AACA,GAAG;AACH,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAwD;AACA;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,wEAAc;AAC3B;AACA;AACA;AACA,aAAa,wEAAc;AAC3B;AACA;AACA,C;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,SAAS,kEAAQ;AACjB,C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACW;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,kBAAkB;AAC9E;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA;AACA;AACA,6DAA6D,uEAAS;AACtE,0EAA0E,uEAAS,uBAAuB;;AAE1G;AACA;AACA;;AAEA,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACW;AACK;AAClB;AACoB;AACQ;AAC2B;AAC6B;AACzE;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qFAAqF;AACrF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,WAAW;AAC5D;AACA,iDAAiD,WAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,wBAAwB,4CAA4C;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW,mDAAmD;AAC1E,YAAY,WAAW,+CAA+C;AACtE,YAAY,WAAW,yDAAyD;AAChF,YAAY,WAAW,2DAA2D;AAClF,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA;AACA,iCAAiC,8DAAa;AAC9C;AACA,+EAA+E,uEAAS;AACxF,qGAAqG,uEAAS,gCAAgC;;AAE9I;AACA;AACA;;AAEA;AACA,6DAA6D,uEAAS;AACtE,0EAA0E,uEAAS,uBAAuB;;AAE1G;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,gEAAM;;AAE3B,OAAO,iEAAO;AACd;AACA,GAAG;AACH;AACA;;;AAGA,uBAAuB,6FAA+B;AACtD,gBAAgB,yEAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,2EAAc;AACxC;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,oBAAoB,uEAAU;;AAE9B;AACA,kDAAkD,8FAAwB;AAC1E,QAAQ,yFAAmB;AAC3B;;AAEA,mDAAmD,+FAAyB;AAC5E,QAAQ,yFAAmB;AAC3B;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;;AC9aA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAgD;AACgB;AACE;AACb;AACb;AACe;AACwC;AACtC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,OAAO,kEAAkE;AACpF,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA,IAAI;AACJ;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,iCAAiC,8DAAa;;AAE9C;AACA;AACA;;AAEA,mBAAmB,oEAAU;;AAE7B;AACA;AACA;;AAEA,wBAAwB,yEAAW;AACnC;AACA;AACA;AACA;;AAEA;AACA,eAAe,gEAAM;AACrB,gBAAgB,gEAAM;AACtB,GAAG;AACH,eAAe,gEAAM;AACrB,gBAAgB,gEAAM;AACtB;;AAEA,gBAAgB,6EAAmB;AACnC,yBAAyB,6FAA+B,cAAc,6FAA+B;AACrG;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL,GAAG;AACH,uEAAuE;AACvE,GAAG;AACH,oEAAoE;AACpE,GAAG;AACH;AACA,wEAAwE;AACxE,GAAG;AACH,8DAA8D;AAC9D,GAAG;AACH;AACA,iEAAiE;AACjE,GAAG;AACH;AACA;AACA;;AAEA,WAAW,4EAAkB,sBAAsB;;AAEnD;AACA;AACA,2EAA2E;AAC3E,GAAG;AACH;AACA,wCAAwC;;AAExC;AACA,0EAA0E;AAC1E,KAAK;AACL,yEAAyE;AACzE,KAAK;AACL;AACA;AACA;AACA,C;;;;;;;;;;;;ACpNA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+F;AAC/C;AACR;AAC0B;AACX;AACF;AACI;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,8CAA8C;AACzD,WAAW,uBAAuB;AAClC,WAAW,OAAO,kEAAkE;AACpF,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA,IAAI;AACJ;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,iCAAiC,8DAAa;;AAE9C;AACA;AACA;;AAEA,mBAAmB,oEAAU;;AAE7B;AACA;AACA;;AAEA,wBAAwB,yEAAW;AACnC;AACA;AACA;AACA;;AAEA;AACA,eAAe,gEAAM;AACrB,gBAAgB,gEAAM;AACtB,GAAG;AACH,eAAe,gEAAM;AACrB,gBAAgB,gEAAM;AACtB;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA,gBAAgB,6EAAmB;AACnC,yBAAyB,6FAA+B,cAAc,6FAA+B;AACrG;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH;AACA,uEAAuE;AACvE,GAAG;AACH,uEAAuE;AACvE,GAAG;AACH;AACA,mEAAmE;AACnE,GAAG;AACH;AACA,iEAAiE;AACjE,GAAG;AACH;AACA,qEAAqE;AACrE,GAAG;AACH;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACtPA;AAAA;AAAA;AAAA;AAAyD;AACA;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,kBAAkB;AACnE;AACA;AACA;AACA;AACA,gDAAgD,kBAAkB;AAClE;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,OAAO,kEAAkE;AACpF,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,wEAAe;AACxB,C;;;;;;;;;;;;AC/GA;AAAA;AAAA;AAAA;AAAqE;AACZ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,8CAA8C;AACzD,WAAW,uBAAuB;AAClC,WAAW,OAAO,kEAAkE;AACpF,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,8EAAqB;AAC9B,C;;;;;;;;;;;;AChFA;AAAA;AAAA;AAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;;AAElB,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,MAAM;AACN;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA,mBAAmB,sBAAsB,SAAS,aAAa;AAC/D;AACA;AACA;AACA;AACA,mBAAmB,gCAAgC,GAAG,kBAAkB;AACxE;AACA;;AAEe;AACf;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC,8DAAa;AAC9C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,C;;;;;;;;;;;;ACpFA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACE;AACqB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,mBAAmB;AAC9B,WAAW,yBAAyB;AACpC,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,kBAAkB;AACjF;AACA;AACA;AACA;AACA,+DAA+D,yBAAyB;AACxF;AACA;AACA;AACA;AACA,+DAA+D,yBAAyB;AACxF;AACA;;AAEe;AACf;AACA;AACA;;AAEA,qBAAqB,gEAAM;;AAE3B,OAAO,iEAAO;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA,cAAc,6EAAe;AAC7B,gBAAgB,6EAAe;AAC/B,eAAe,6EAAe,gCAAgC;;AAE9D;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,6EAAe;AACtC,yBAAyB,6EAAe,yBAAyB;;AAEjE;AACA;AACA,KAAK;AACL;AACA;;AAEA,eAAe,6EAAe;AAC9B,iBAAiB,6EAAe;AAChC,iBAAiB,6EAAe,+BAA+B;;AAE/D,6CAA6C;;AAE7C,0DAA0D;;AAE1D;AACA;;AAEA;AACA,C;;;;;;;;;;;;AC1GA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACE;AACqB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,mBAAmB;AAC9B,WAAW,yBAAyB;AACpC,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,kBAAkB;AACrF;AACA;AACA;AACA;AACA,mEAAmE,yBAAyB;AAC5F;AACA;AACA;AACA;AACA,mEAAmE,yBAAyB;AAC5F;AACA;;AAEe;AACf;AACA;AACA;;AAEA,qBAAqB,gEAAM;;AAE3B,OAAO,iEAAO;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;;AAEvD;AACA,cAAc,6EAAe;AAC7B,gBAAgB,6EAAe;AAC/B,eAAe,6EAAe,gCAAgC;;AAE9D;AACA,GAAG;;;AAGH;AACA,eAAe,6EAAe;AAC9B,iBAAiB,6EAAe;AAChC,iBAAiB,6EAAe,+BAA+B;;AAE/D,6CAA6C;;AAE7C;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACzFA;AAAA;AAAA;AAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACE;AACqB;AACZ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,oBAAoB;AAC5F;AACA;AACA;AACA;AACA,wEAAwE,oBAAoB;AAC5F;AACA;;AAEe;AACf;AACA;AACA;;AAEA,qBAAqB,gEAAM;;AAE3B,OAAO,iEAAO;AACd;AACA;;AAEA;AACA,4DAA4D,uEAAS,yBAAyB;;AAE9F;AACA;AACA;;AAEA,YAAY,6EAAe;AAC3B,cAAc,6EAAe;AAC7B;AACA,aAAa,6EAAe;AAC5B,eAAe,6EAAe;AAC9B,eAAe,6EAAe;AAC9B;;AAEA;AACA;AACA;AACA,6BAA6B,6EAAe;AAC5C;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,6EAAe;AACpC,uBAAuB,6EAAe,yBAAyB;;AAE/D;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACnFA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACE;AACqB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;;AAEA,qBAAqB,gEAAM;;AAE3B,OAAO,iEAAO;AACd;AACA;;AAEA;AACA,mBAAmB,6EAAe;AAClC;AACA;AACA,aAAa,6EAAe;AAC5B,eAAe,6EAAe;AAC9B,eAAe,6EAAe,kCAAkC;;AAEhE;AACA,C;;;;;;;;;;;;AC7CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4E;AACpC;AACa;AACK;AAClB;AACuD;AACtC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,iBAAiB,gEAAM;AACvB;AACA,iCAAiC,8DAAa;;AAE9C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,kFAAwB;;AAErC;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA,gBAAgB,yEAAe,OAAO,6FAA+B;AACrE,oBAAoB,yEAAe,WAAW,6FAA+B;AAC7E;AACA,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC1FA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACW;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,uEAAS;AAC1B,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,cAAc;AAC3B,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACU;AAC0B;AACnB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,aAAa,kFAAwB,OAAO,qEAAW;AACvD;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACQ;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;;AAEnB;AACA;AACA;;AAEA,SAAS,oEAAU;AACnB,C;;;;;;;;;;;;AClCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACgB;AACQ;AACP;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,aAAa,wEAAc,mBAAmB,4EAAkB,iBAAiB;AACjF;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACgB;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA,wBAAwB,wEAAc;AACtC;AACA;AACA;AACA,wBAAwB,wEAAc;;AAEtC;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAA;AAAgE;AACpB;AACa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,4EAAkB;AACnC,iBAAiB,4EAAkB,CAAC,kEAAQ;AAC5C,qDAAqD;AACrD;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAA2D;AACnE,QAAQ;AACR;AACA;AACA;AACA,WAAW,SAAS,8DAA8D;AAClF,WAAW,SAAS,gEAAgE;AACpF,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA,MAAM,2DAA2D;AACjE,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2DAA2D;AACjE,MAAM;AACN;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA;AACA,sBAAsB,gEAAM;AAC5B,oBAAoB,gEAAM;AAC1B,uBAAuB,gEAAM;AAC7B,qBAAqB,gEAAM,8BAA8B;;AAEzD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AC5FA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAA0C;AACe;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,oBAAoB,iEAAO;AAC3B,C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkD;AACQ;AAClB;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,aAAa,qEAAW,4BAA4B,yEAAe,0BAA0B;AAC7F;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACxDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACF;AACY;AACD;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA;AACA;AACA,6DAA6D,uEAAS;AACtE,0EAA0E,uEAAS,uBAAuB;;AAE1G;AACA;AACA;;AAEA,0BAA0B,iEAAO;;AAEjC;AACA;AACA;;AAEA,qBAAqB,gEAAM,CAAC,sEAAY;AACxC;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;AClEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkD;AACV;AACW;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,kBAAkB;AACvE;AACA;AACA;AACA;AACA,qDAAqD,2BAA2B;AAChF;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA,+EAA+E,uEAAS;AACxF,qGAAqG,uEAAS,gCAAgC;;AAE9I;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,qEAAW;AACnC;AACA;AACA;AACA,wBAAwB,qEAAW;;AAEnC;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;;;;;;AC9EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8E;AACtB;AACJ;AACK;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,kBAAkB;AACzE;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,mFAAyB,CAAC,wEAAc,QAAQ,sEAAY;AACrE,C;;;;;;;;;;;;ACvCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACgD;AACwB;AAChB;AACE;AACc;AACA;AACV;AACF;AACI;AACF;AACJ;AACA;AAC8B;AAClB;AACV;AACE;AACE;AAC0B;AACA;AACgB;AACR;AACJ;AACI;AACN;AACA;AAClB;AACE;AACc;AACA;AACV;AACF;AACI;AACF;AACJ;AACA;AACA;AACE;AACE;AACI;AACN;AACM;AACN;AACF;AACE;AACpB;AACM;AACJ;AACM;AACQ;AACV;AACF;AACI;AACF;AACF;AACM;AACR;AACA;AACU;AAChB;AACgB;AACY;AACF;AACY;AACtB;AACV;AACQ;AACQ;AACR;AACA;AACE;AACJ;AACV;AACF;AACY;AACI;AACF;AACR;AACF;AACE;AACE;AACQ;AACM;AACJ;AACV;AACJ;AAC0C;AACtC;AACA;AACN;AACQ;AACR;AACc;AACN;AACQ;AAChB;AACsB;AACtB;AACE;AACJ;AACE;AACE;AACkB;AAClB;AACA;AACgB;AACZ;AACJ;AACJ;AACM;AACE;AACM;AACQ;AACV;AACF;AACI;AACF;AACJ;AACA;AACA;AACJ;AACI;AACM;AACF;AACF;AACI;AACF;AACJ;AACA;AACA;AACN;AACM;AACF;AACJ;AACQ;AACJ;AACc;AACV;AACQ;AACE;AACQ;AACZ;AACI;AACN;AACA;AACJ;AAChB;AACA;AACI;AACM;AACE;AACwB;AACpC;AACQ;AACF;AACY;AACR;AACE;AACE;AACQ;AACE;AACV;AACJ;AACI;AACA;AACN;AACQ;AACR;AACM;AACM;AACJ;AACM;AACQ;AACV;AACF;AACI;AACF;AACF;AACM;AACR;AACQ;AACR;AACU;AAC1B;AACwB;AAChB;AACE;AACc;AACA;AACV;AACF;AACI;AACF;AACJ;AACA;AACJ;;;;;;;;;;;;;ACnMtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAgD;AACc;AACE;AACJ;AACE;AACI;AACA;AACxB;AACe;AACjB;AACN;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,aAAa,SAAS;AACtB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,UAAU;AACV;;AAEe;AACf;AACA;AACA,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;;AAExB,OAAO,iEAAO;AACd;AACA;;AAEA,OAAO,iEAAO;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oEAAU;AACvB,4BAA4B,2EAAiB;AAC7C,wBAAwB,8DAAG;AAC3B;AACA,GAAG;AACH,6BAA6B,4EAAkB;AAC/C,sBAAsB,8DAAG;AACzB;AACA,GAAG;AACH,2BAA2B,0EAAgB;AAC3C,uBAAuB,8DAAG;AAC1B;AACA,GAAG;AACH,4BAA4B,2EAAiB;AAC7C,yBAAyB,8DAAG;AAC5B;AACA,GAAG;AACH,8BAA8B,6EAAmB;AACjD,yBAAyB,8DAAG;AAC5B;AACA,GAAG;AACH,8BAA8B,6EAAmB;AACjD;AACA,C;;;;;;;;;;;;ACjFA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,sBAAsB,gEAAM;AAC5B;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,sBAAsB,gEAAM;AAC5B;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,C;;;;;;;;;;;;ACzCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB;AACA,C;;;;;;;;;;;;ACjCA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACI;AACI;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,SAAS,kEAAQ,qBAAqB,oEAAU;AAChD,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAgD;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,2BAA2B,oEAAU;AACrC,4BAA4B,oEAAU;AACtC;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAkD;AACO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,4BAA4B,qEAAW;AACvC,6BAA6B,qEAAW;AACxC;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAgD;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,oEAAU;AACnB;AACA,GAAG;AACH,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAgE;AACP;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,4BAA4B,4EAAkB;AAC9C,6BAA6B,4EAAkB;AAC/C;AACA,C;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAsD;AACG;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,8BAA8B,uEAAa;AAC3C,+BAA+B,uEAAa;AAC5C;AACA,C;;;;;;;;;;;;AClCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAwD;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,+BAA+B,wEAAc;AAC7C,gCAAgC,wEAAc;AAC9C;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAsD;AACG;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,8BAA8B,uEAAa;AAC3C,+BAA+B,uEAAa;AAC5C;AACA,C;;;;;;;;;;;;AClCA;AAAA;AAAA;AAAA;AAAkD;AACO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,4BAA4B,qEAAW;AACvC,6BAA6B,qEAAW;AACxC;AACA,C;;;;;;;;;;;;AC1CA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB,gEAAM;AACvB,kBAAkB,gEAAM;AACxB;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAgD;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,oEAAU;AACnB,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAsD;AACG;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,uEAAa;AACtB,C;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAAoD;AACK;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,sEAAY;AACrB,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAkD;AACO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,qEAAW;AACpB,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAsD;AACG;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,uEAAa;AACtB,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAoD;AACK;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,sEAAY;AACrB,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAgD;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,kBAAkB;AACrE;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,oEAAU;AACnB,C;;;;;;;;;;;;ACzCA;AAAA;AAAA;AAAA;AAAgD;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,oEAAU;AACnB,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAA8C;AACW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,mEAAS;AAClB,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACI;AACW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,mEAAS,YAAY,iEAAO;AACrC,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA,C;;;;;;;;;;;;AChEA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,aAAa,gEAAM;AACnB,kBAAkB,gEAAM;AACxB,gBAAgB,gEAAM,yBAAyB;;AAE/C;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACxFA;AAAA;AAAA;AAAA;AAAA;AAA8C;AACJ;AACe;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,mEAAS,YAAY,iEAAO;AACrC,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAsD;AACG;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,uEAAa;AACtB;AACA,GAAG;AACH,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAwD;AACA;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,wEAAc;AAC3B;AACA;AACA;AACA,aAAa,wEAAc;AAC3B;AACA;AACA,C;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,MAAM,iEAAiE;AAClF,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACpCA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACW;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,kBAAkB;AAClF;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA;AACA;AACA,6DAA6D,uEAAS;AACtE,0EAA0E,uEAAS,uBAAuB;;AAE1G;AACA;AACA;;AAEA,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACyB;AAC8B;AACrD;AACgB;AACD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,qBAAqB,gEAAM;;AAE3B,OAAO,iEAAO;AACd;AACA,GAAG;AACH;AACA;;;AAGA,uBAAuB,6FAA+B;AACtD,gBAAgB,yEAAe;AAC/B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,oBAAoB,4EAAU;;AAE9B;AACA,mDAAmD;AACnD;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;;ACtHA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACPA;AAAA;AAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;;;;;;ACrBA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACjDA;AAAA;AAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACxBA;AAAA;AAAA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B,GAAG;AACH;AACA;AACA,cAAc,OAAO;AACrB,GAAG;AACH;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B,GAAG;AACH;AACA;AACA,cAAc,OAAO;AACrB,GAAG;AACH;AACA;AACA,oBAAoB,OAAO;AAC3B,GAAG;AACH;AACA;AACA,cAAc,OAAO;AACrB,GAAG;AACH;AACA;AACA,cAAc,OAAO;AACrB,GAAG;AACH;AACA;AACA,oBAAoB,OAAO;AAC3B,GAAG;AACH;AACA;AACA,cAAc,OAAO;AACrB,GAAG;AACH;AACA;AACA,oBAAoB,OAAO;AAC3B,GAAG;AACH;AACA;AACA,cAAc,OAAO;AACrB,GAAG;AACH;AACA;AACA,oBAAoB,OAAO;AAC3B,GAAG;AACH;AACA;AACA,cAAc,OAAO;AACrB,GAAG;AACH;AACA;AACA,mBAAmB,OAAO;AAC1B,GAAG;AACH;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACe;AACf;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,0DAA0D,OAAO;AACjE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACpFA;AAAA;AAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM,QAAQ,MAAM;AAC/B,WAAW,MAAM,QAAQ,MAAM;AAC/B,aAAa,MAAM,IAAI,MAAM;AAC7B,YAAY,MAAM,IAAI,MAAM;AAC5B;AACA;AACA,QAAQ,+EAAiB;AACzB;AACA;AACA,GAAG;AACH,QAAQ,+EAAiB;AACzB;AACA;AACA,GAAG;AACH,YAAY,+EAAiB;AAC7B;AACA;AACA,GAAG;AACH;AACe,yEAAU,E;;;;;;;;;;;;ACjCzB;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA,C;;;;;;;;;;;;ACVA;AAAA;AAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO,6EAAe;AACtB;AACA;AACA,GAAG;AACH,WAAW,6EAAe;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,6EAAe;AACxB;AACA;AACA,GAAG;AACH,OAAO,6EAAe;AACtB;AACA;AACA,GAAG;AACH,aAAa,6EAAe;AAC5B;AACA;AACA;AACA;AACA,GAAG;AACH;AACe,uEAAQ,E;;;;;;;;;;;;ACpJvB;AAAA;AAAA;AAA6E;AACd;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iFAAmB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,OAAO,0EAAY;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW,0EAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,SAAS,0EAAY;AACrB;AACA;AACA;AACA;AACA,GAAG;AACH,OAAO,0EAAY;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH,aAAa,0EAAY;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACe,oEAAK,E;;;;;;;;;;;;ACjGpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4D;AACR;AACQ;AACZ;AACN;AAC1C;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,oCAAoC;AACpC,mCAAmC;AACnC;;AAEA;AACA;AACA,kBAAkB,oEAAc;AAChC,cAAc,gEAAU;AACxB,kBAAkB,oEAAc;AAChC,YAAY,8DAAQ;AACpB,SAAS,2DAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACe,qEAAM,E;;;;;;;;;;;;AC7BrB;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB;;AAEjB;AACA,iCAAiC;AACjC,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,gEAAM;;AAE5B;AACA;AACA;AACA,GAAG;AACH;AACA,C;;;;;;;;;;;;AChEA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,iBAAiB;;AAEjB;AACA,iCAAiC;AACjC,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,gEAAM;;AAE5B;AACA;AACA;AACA,GAAG;AACH;AACA,C;;;;;;;;;;;;AChEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmE;AACV;AACM;AACE;AACN;AACc;AACN;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,IAAI;AACtB;AACA,oBAAoB,IAAI;AACxB;AACA,mBAAmB,IAAI;AACvB;AACA;AACA;AACA;AACA,0BAA0B,IAAI;AAC9B;AACA,4BAA4B,IAAI;AAChC;AACA,2BAA2B,IAAI;;AAE/B;AACA;AACA,oCAAoC,EAAE,KAAK,EAAE;AAC7C,qBAAqB,EAAE,KAAK,EAAE;AAC9B,oCAAoC,EAAE,KAAK,EAAE,MAAM,EAAE;AACrD,wBAAwB,EAAE,MAAM,EAAE;AAClC,uCAAuC,EAAE,MAAM,EAAE,OAAO,EAAE;AAC1D;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kDAAkD,YAAY;AAC9D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oDAAoD,YAAY;AAChE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+EAA+E;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,wBAAwB,4EAAc;;AAEtC;AACA;AACA;AACA;AACA,eAAe,4EAAc;AAC7B;;AAEA;AACA;AACA;AACA,aAAa,4EAAc;AAC3B,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa,+EAAiB;AAC9B,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,aAAa,4EAAc,CAAC,wEAAU;AACtC,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,aAAa,+EAAiB,CAAC,2EAAa;AAC5C,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,aAAa,uEAAS;AACtB;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,aAAa,uEAAS;AACtB;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,aAAa,uEAAS;AACtB;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,aAAa,0EAAY;AACzB;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACe,sEAAO,E;;;;;;;;;;;;AC59CtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqD;AACK;AAClB;AACK;AACuB;AAC2B;AAC6B;AACzE;AACL;AACW;AACzD,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qFAAqF;AACrF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,WAAW;AAC5D;AACA,iDAAiD,WAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,wBAAwB,4CAA4C;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW,mDAAmD;AAC1E,YAAY,WAAW,+CAA+C;AACtE,YAAY,WAAW,yDAAyD;AAChF,YAAY,WAAW,2DAA2D;AAClF,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA;AACA;AACA,iCAAiC,8DAAa;;AAE9C;AACA;AACA;;AAEA;AACA,+EAA+E,uEAAS;AACxF,qGAAqG,uEAAS,gCAAgC;;AAE9I;AACA;AACA;;AAEA;AACA,6DAA6D,uEAAS;AACtE,0EAA0E,uEAAS,uBAAuB;;AAE1G;AACA;AACA;;AAEA;AACA;AACA,aAAa,gEAAM;AACnB,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,0BAA0B,2EAAc;AACxC;AACA;;AAEA;AACA,GAAG;AACH;;AAEA,aAAa,mBAAmB;AAChC;;AAEA,gDAAgD,8FAAwB;AACxE,MAAM,yFAAmB;AACzB;;AAEA,iDAAiD,+FAAyB;AAC1E,MAAM,yFAAmB;AACzB;;AAEA;AACA,iBAAiB,6DAAO;;AAExB;AACA;;AAEA;AACA;;AAEA,wBAAwB,wBAAwB;AAChD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;AACP;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA,GAAG;AACH,aAAa,gEAAM;;AAEnB;AACA;AACA,GAAG;AACH;AACA;;;AAGA,gBAAgB,yEAAe,OAAO,6FAA+B;AACrE;;AAEA,aAAa,kCAAkC;AAC/C;;AAEA;AACA;AACA;;AAEA,wEAAwE;;AAExE;AACA;AACA,MAAM,oEAAM,mBAAmB;AAC/B,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;;ACjiBA;AAAA;AAAA;AAAA;AAAmD;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE;AACxE,sBAAsB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE;AAC1E,gCAAgC,EAAE,UAAU,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,sBAAsB;AAC7D;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,wFAAwF,uEAAS;;AAEjG;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,+CAA+C;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC,EAAE,SAAS,+BAA+B,OAAO,EAAE,SAAS,+BAA+B;AAC9H,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;;AC5RA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;;AAEe;AACf,EAAE,0EAAY;;AAEd;AACA,oCAAoC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,IAAI;;AAE/F;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,gEAAM;AACf,C;;;;;;;;;;;;AClDA;AAAA;AAAA;AAAA;AAAwC;AACW;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,gBAAgB;AAC1F;AACA;AACA;;AAEe;AACf;AACA;AACA;;AAEA,sDAAsD,uEAAS;;AAE/D;AACA;AACA;;AAEA,aAAa,gEAAM;AACnB,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACI;AACO;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA,4CAA4C,iCAAiC;AAC7E;AACA;AACA;AACA;AACA,sDAAsD,YAAY;AAClE;AACA;;AAEe;AACf,EAAE,0EAAY;;AAEd;AACA;AACA;;AAEA,aAAa,gEAAM,YAAY;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,kEAAQ;AACnB;;AAEA;AACA,iBAAiB,uEAAS;AAC1B;;AAEA;AACA,kBAAkB,uEAAS;AAC3B;;AAEA;AACA,oBAAoB,uEAAS;AAC7B;;AAEA;AACA,oBAAoB,uEAAS;AAC7B;;AAEA;AACA,yBAAyB,uEAAS;AAClC;;AAEA;AACA,C;;;;;;;;;;;;ACrFA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,mBAAmB,uEAAS;AAC5B;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACF;AACW;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,kBAAkB;AACnE;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA;AACA;AACA,6DAA6D,uEAAS;AACtE,0EAA0E,uEAAS,uBAAuB;;AAE1G;AACA;AACA;;AAEA,aAAa,gEAAM;AACnB,YAAY,uEAAS;AACrB;AACA;AACA;AACA;AACA;AACA,SAAS,iEAAO;AAChB,C;;;;;;;;;;;;ACxDA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,kBAAkB,uEAAS;AAC3B;AACA;AACA;AACA,C;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,cAAc,uEAAS;AACvB;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACE;AACI;AACW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,YAAY,uEAAS;AACrB,mBAAmB,mEAAS;AAC5B;AACA,SAAS,iEAAO;AAChB,C;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACQ;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,gBAAgB,uEAAS;AACzB,aAAa,oEAAU;AACvB;AACA;AACA,C;;;;;;;;;;;;ACpCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACwB;AACY;AACnB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,oBAAoB,uEAAS;AAC7B,aAAa,kFAAwB,OAAO,4EAAkB;AAC9D;AACA;AACA;AACA,SAAS,4EAAkB;AAC3B;AACA;AACA,C;;;;;;;;;;;;AC/CA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,qBAAqB,uEAAS;AAC9B;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,gBAAgB,uEAAS;AACzB;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACgB;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,cAAc,uEAAS;AACvB;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAc,uBAAuB;AACzD;;AAEA;AACA;AACA,C;;;;;;;;;;;;ACzCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACI;AACa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,gBAAgB,uEAAS;AACzB;AACA;AACA,SAAS,kEAAQ;AACjB,C;;;;;;;;;;;;AClCA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,gBAAgB,uEAAS;AACzB;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACF;AACW;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,aAAa,uEAAS;AACtB,aAAa,iEAAO;AACpB;AACA;AACA,C;;;;;;;;;;;;ACxDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4E;AAClB;AAClB;AACW;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA;AACA;AACA,+EAA+E,uEAAS;AACxF,qGAAqG,uEAAS;AAC9G,aAAa,gEAAM;AACnB,iBAAiB,uEAAS;AAC1B,aAAa,kFAAwB,OAAO,yEAAe;AAC3D;AACA;AACA;AACA,SAAS,yEAAe;AACxB;AACA;AACA,C;;;;;;;;;;;;ACnEA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB,aAAa,uEAAS,YAAY;;AAElC;AACA;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAkD;AACO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,SAAS,qEAAW;AACpB;AACA,GAAG;AACH,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAwD;AACA;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,wEAAc;AAC3B;AACA;AACA;AACA,aAAa,wEAAc;AAC3B;AACA,C;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA,C;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,aAAa,gEAAM;AACnB;AACA;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,SAAS,oEAAU;AACnB,C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACW;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,kBAAkB;AAChF;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA;AACA;AACA,6DAA6D,uEAAS;AACtE,0EAA0E,uEAAS,uBAAuB;;AAE1G;AACA;AACA;;AAEA,aAAa,gEAAM;AACnB;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkD;AACA;AACC;AACM;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO,kEAAkE;AACpF,WAAW,cAAc;AACzB,WAAW,cAAc;AACzB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA;AACA;AACA,+EAA+E,uEAAS;AACxF,qGAAqG,uEAAS;AAC9G,aAAa,qEAAW;AACxB;AACA;AACA;AACA,aAAa,qEAAW;AACxB;AACA,C;;;;;;;;;;;;AC7DA;AAAA;AAAA;AAAA;AAAwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,kBAAkB,gEAAM;AACxB;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACI;AACN;AACiB;AACN;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEe;AACf,EAAE,0EAAY;AACd;AACA,oCAAoC,uEAAS;AAC7C,sCAAsC,uEAAS;AAC/C,oCAAoC,uEAAS;AAC7C,kCAAkC,uEAAS;AAC3C,oCAAoC,uEAAS;AAC7C,wCAAwC,uEAAS;AACjD,wCAAwC,uEAAS,uBAAuB;;AAExE,0BAA0B,mEAAS,CAAC,gEAAM,kCAAkC;;AAE5E,wBAAwB,iEAAO,sCAAsC;;AAErE;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACjEA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACO;AACD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,yEAAe;AACxB,C;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACT;AACe;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,iEAAO;AAChB,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACP;AACa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,kEAAQ;AACjB,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACO;AACD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,yEAAe;AACxB,C;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACO;AACD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,yEAAe;AACxB,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACH;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,oEAAU;AACnB,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACL;AACW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,mEAAS;AAClB,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACD;AACO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,qEAAW;AACpB,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACH;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,oEAAU;AACnB,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACP;AACa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,kEAAQ;AACjB,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACP;AACa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,eAAe,uEAAS;AACxB,SAAS,kEAAQ;AACjB,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,0EAAY;AACd,wDAAwD;;AAExD;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,kKAAkK;;AAElK;AACA;;AAEA;AACA;AACA,C;;;;;;;;;;;ACnDA,6JAAe,GAAG,IAAqC,CAAC,iCAAO,EAAE,oCAAC,CAAC;AAAA;AAAA;AAAA,oGAAC,CAAC,KAAK,EAA6E,CAAC,kBAAkB,aAAa,gBAAgB,+BAA+B,WAAW,4FAA4F,WAAW,kEAAkE,4DAA4D,YAAY,IAAI,kBAAkB,yBAAyB,0DAA0D,kBAAkB,sBAAsB,yCAAyC,UAAU,cAAc,yBAAyB,oBAAoB,IAAI,SAAS,UAAU,oCAAoC,cAAc,IAAI,yCAAyC,SAAS,0CAA0C,0FAA0F,wWAAwW,8DAA8D,uDAAuD,iNAAiN,0BAA0B,4BAA4B,KAAK,KAAK,gDAAgD,mFAAmF,sBAAsB,KAAK,kCAAkC,iDAAiD,KAAK,GAAG,mBAAmB,8HAA8H,oIAAoI,iDAAiD,qBAAqB,uBAAuB,eAAe,0BAA0B,GAAG,wBAAwB,yCAAyC,oBAAoB,KAAK,gDAAgD,4DAA4D,qBAAqB,OAAO,EAAE,oBAAoB,KAA0B,qBAAqB;;AAEhpF,yC;;;;;;;;;;;;ACFA;AACA;AACA,IAAI,KAA4D;AAChE,IAAI,SACuD;AAC3D,CAAC,qBAAqB;;AAEtB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD,QAAQ;AAC7D,4CAA4C,QAAQ;AACpD,4DAA4D,QAAQ;AACpE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA,+BAA+B,gCAAgC;AAC/D;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD,gEAAgE,yEAAyE;AACzI;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,sCAAsC,iDAAiD,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,kCAAkC,0BAA0B,EAAE;AAC9D;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,EAAE;AACnB;AACA;AACA;AACA,4BAA4B,2BAA2B,EAAE;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA,4BAA4B,6BAA6B,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,oCAAoC,+CAA+C,EAAE;AACrF;AACA;AACA;AACA,SAAS;AACT;AACA,4BAA4B,+BAA+B,EAAE;AAC7D;AACA,4BAA4B,8BAA8B,EAAE;AAC5D;AACA;AACA,SAAS;AACT;AACA,4BAA4B,mCAAmC,EAAE;AACjE;AACA,4BAA4B,4BAA4B,EAAE;AAC1D;AACA,4BAA4B,2DAA2D,EAAE;AACzF;AACA,4BAA4B,+BAA+B,EAAE;AAC7D;AACA,4BAA4B,uBAAuB,EAAE;AACrD;AACA;AACA;AACA,SAAS;AACT;AACA,4BAA4B,iCAAiC,EAAE;AAC/D;AACA,4BAA4B,4BAA4B,EAAE;AAC1D;AACA,4BAA4B,0BAA0B,EAAE;AACxD;AACA,4BAA4B,uBAAuB,EAAE;AACrD;AACA,4BAA4B,sBAAsB,EAAE;AACpD;AACA,4BAA4B,gDAAgD,EAAE;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iBAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,oCAAoC,EAAE;AACtG;AACA;AACA,2CAA2C,oBAAoB;AAC/D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA,2CAA2C,uCAAuC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,2BAA2B;AACtE,wCAAwC,uBAAuB;AAC/D;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B,mBAAmB,OAAO;AAC1B,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA,oDAAoD,4CAA4C,EAAE;AAClG;AACA,sDAAsD,0CAA0C,EAAE;AAClG;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,gBAAgB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,gBAAgB;AAC9E;AACA;AACA;AACA,mEAAmE,0DAA0D,EAAE;AAC/H;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,KAAK;AACxB,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA,wCAAwC,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,eAAe;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oEAAoE;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,4BAA4B;AAC9C;AACA;AACA;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA;AACA,8CAA8C;AAC9C,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,4BAA4B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,2DAA2D,iBAAiB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,KAAK;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kCAAkC,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,kCAAkC,kCAAkC,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,KAAK;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,KAAK;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,2BAA2B;AAC3E,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,KAAK;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iBAAiB;AACvD,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,UAAU,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,4BAA4B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,OAAO;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,yCAAyC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,kCAAkC,EAAE;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,qBAAqB,EAAE;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iDAAiD;AAClG;AACA;AACA;AACA;AACA,kCAAkC,4BAA4B,EAAE;AAChE;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,kCAAkC,6BAA6B,EAAE;AACjE;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,6BAA6B,EAAE;AACjE;AACA,aAAa;AACb;AACA,kCAAkC,6BAA6B,EAAE;AACjE;AACA,aAAa;AACb,oDAAoD;AACpD;AACA,cAAc;AACd;AACA,kCAAkC,6BAA6B,EAAE;AACjE;AACA,aAAa;AACb;AACA,kCAAkC,6BAA6B,EAAE;AACjE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA,0CAA0C,wCAAwC,EAAE;AACpF;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,iDAAiD,kEAAkE;AACnH;AACA;AACA;AACA;AACA;AACA,+CAA+C,uCAAuC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,sHAAsH,iCAAiC,EAAE;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gCAAgC,YAAY;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iCAAiC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,kCAAkC,EAAE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,YAAY,EAAE;AAC3E;AACA;AACA;AACA;AACA;AACA,4DAA4D,YAAY,EAAE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,kCAAkC,EAAE;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,qCAAqC,EAAE;AACzF;AACA;AACA;AACA;AACA,kDAAkD,qCAAqC,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iDAAiD,EAAE;AAChG;AACA,yDAAyD,kCAAkC,EAAE;AAC7F;AACA;AACA,2CAA2C,uBAAuB;AAClE,oCAAoC,iCAAiC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,sCAAsC,UAAU,EAAE,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,8BAA8B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,sCAAsC,EAAE;AAC9E;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAsB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iCAAiC,EAAE;AACrE;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,4BAA4B;AAC5B;AACA;AACA,sDAAsD;AACtD;AACA;AACA,sDAAsD;AACtD;AACA,6CAA6C;AAC7C,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;ACjmFD;AACA;AACA,MAAM,IAA0C;AAChD,IAAI,iCAAO,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,oGAAC;AACvB,GAAG,MAAM,EAIN;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,MAAM,gBAAgB,SAAS,SAAS,OAAO;AAC3E,+BAA+B,MAAM;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,MAAM;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;;;;;ACraD;AACA,EAAE,KAA4D;AAC9D,EAAE,SACmD;AACrD,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,EAAE;AACrD;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,6BAA6B,wBAAwB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,wBAAwB,IAAI,MAAM,IAAI,MAAM,IAAI;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,eAAe;AACf;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,iBAAiB,OAAO,OAAO,sBAAsB;AACrD,iBAAiB,OAAO,OAAO,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA,eAAe;AACf;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,iEAAiE;AACjE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,gBAAgB,sCAAsC,iBAAiB,EAAE;AACrF,2BAA2B,uDAAuD;AAClF;AACA;;AAEA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;;AAEA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,QAAQ;AAC3D,0CAA0C,QAAQ;AAClD,0DAA0D,QAAQ;AAClE;AACA;AACA;;AAEA,6HAA6H;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX,OAAO;AACP,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW,uBAAuB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,kCAAkC,WAAW,uBAAuB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,kCAAkC,EAAE;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,kCAAkC,EAAE;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,6BAA6B,EAAE;AACvF;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,QAAQ;AACzB;AACA,iBAAiB,OAAO;AACxB,iBAAiB,QAAQ;AACzB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,OAAO;AACxB,mBAAmB,OAAO,YAAY,oBAAoB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uBAAuB;AACtC,eAAe,oCAAoC;AACnD,eAAe,kDAAkD;AACjE,eAAe,qCAAqC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,SAAS;AAC1B,mBAAmB;AACnB;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oBAAoB;AACjD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,QAAQ;AACzB,iBAAiB,WAAW;AAC5B,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,QAAQ;AACzB,iBAAiB,WAAW;AAC5B,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,MAAM;AACvB,iBAAiB,QAAQ;AACzB;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,+BAA+B,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,SAAS;AAC1B,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,SAAS;AAC1B,iBAAiB,OAAO;AACxB;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA,6BAA6B;AAC7B,kCAAkC;AAClC,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA,kCAAkC;AAClC,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,EAAE;AACnB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,cAAc;AAC/B,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,iBAAiB,SAAS;AAC1B,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,cAAc;AAC/B,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uBAAuB;AACjD;AACA;AACA;AACA,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,2DAA2D,kCAAkC;AAC7F;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,iNAAiN;AACjN;AACA;AACA,6BAA6B,YAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,eAAe;AAC5B,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,oBAAoB,EAAE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA,4CAA4C,aAAa;AACzD;AACA,4CAA4C,aAAa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,+BAA+B;AAC5D;AACA,WAAW;AACX;AACA;AACA;AACA,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAA6C;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA,oCAAoC,8CAA8C;AAClF;AACA;AACA;AACA,yCAAyC,WAAW;AACpD,iCAAiC,8CAA8C;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,WAAW;AAC/D,wDAAwD,WAAW;AACnE,wCAAwC,8CAA8C;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,iCAAiC;AACjG,oEAAoE,iCAAiC;AACrG;AACA,uDAAuD,iCAAiC;AACxF,0DAA0D,iCAAiC;AAC3F,uDAAuD,iCAAiC;AACxF;AACA;AACA;AACA,uDAAuD,iCAAiC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,iCAAiC;AAC7F,gEAAgE,iCAAiC;AACjG;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,iCAAiC;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,6CAA6C,iCAAiC;AAC9E;AACA;AACA;AACA;AACA,+CAA+C,iCAAiC;AAChF;AACA,uDAAuD,iCAAiC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,uCAAuC,WAAW;AAClD;AACA,yCAAyC,WAAW;AACpD;AACA,iDAAiD,WAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,WAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,2CAA2C,WAAW;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,8BAA8B;AAC9E;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,0CAA0C,WAAW;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,8BAA8B;AACjF;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8BAA8B;AAC5E;AACA;AACA;AACA;AACA,6CAA6C,8BAA8B;AAC3E;AACA;AACA,qDAAqD,8BAA8B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,wCAAwC,WAAW;AACnD;AACA,uCAAuC,WAAW;AAClD;AACA,+CAA+C,WAAW;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,WAAW;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,qCAAqC,WAAW;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,+CAA+C;AACxF;AACA,mBAAmB,+CAA+C;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,kCAAkC;AAC5E;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO,YAAY,oBAAoB;AAC1D;AACA;AACA,4BAA4B,aAAa;AACzC,8BAA8B,aAAa;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,0CAA0C,oBAAoB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,aAAa;AACpB,OAAO,eAAe;AACtB,OAAO,cAAc;AACrB,OAAO,aAAa;AACpB,OAAO,cAAc;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,mBAAmB;AACnB;AACA,4CAA4C,aAAa;AACzD;AACA,4CAA4C,aAAa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8BAA8B;AACvD;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qEAAqE,kBAAkB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,mBAAmB;AACrG;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,SAAS;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAc;AAChC,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B,kBAAkB,KAAK;AACvB;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,KAAK;AACvB;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,eAAe;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,YAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO,iEAAiE;AACrF;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4BAA4B;AACrD;AACA;AACA;AACA;AACA;AACA,6BAA6B,2BAA2B;AACxD;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,eAAe;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB,OAAO,QAAQ,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,eAAe;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,UAAU;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,UAAU;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yBAAyB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,mBAAmB,OAAO,EAAE,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2BAA2B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,sBAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,sBAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2BAA2B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2BAA2B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oBAAoB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gCAAgC,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gCAAgC,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,WAAW;AAC5C,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uCAAuC,EAAE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uBAAuB;AACtD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,mBAAmB,qBAAqB;AACxC,mBAAmB,iCAAiC;AACpD,mBAAmB,8CAA8C;AACjE,mBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iCAAiC;AACzE,kDAAkD,iCAAiC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,uBAAuB;AACjE;AACA,6CAA6C,uBAAuB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,yBAAyB;AACjE,uCAAuC,yBAAyB;AAChE,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,QAAQ;;AAEvB,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yBAAyB;AAC7D;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF,qEAAqE,6BAA6B;AAClG;AACA;;AAEA,aAAa,OAAO;AACpB,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6BAA6B;AAC5C;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA,2CAA2C,2BAA2B;AACtE;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA,yCAAyC,2BAA2B;AACpE;AACA;AACA,aAAa,OAAO;AACpB;AACA,eAAe;AACf;AACA;AACA;AACA,qCAAqC,2BAA2B;AAChE;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,UAAU,EAAE;AACvC,2BAA2B,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,4BAA4B;AAC5D;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,wBAAwB,KAAK,wBAAwB;AAChG;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA,uCAAuC,wBAAwB,KAAK,wBAAwB;AAC5F;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA,sCAAsC,wBAAwB;AAC9D;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,2CAA2C,wBAAwB,KAAK,wBAAwB;AAChG;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA,uCAAuC,wBAAwB,KAAK,wBAAwB;AAC5F;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,aAAa,UAAU;AACvB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,eAAe;AACpC;AACA;AACA,0BAA0B,gBAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,aAAa,UAAU;AACvB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B,0BAA0B,YAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA,qBAAqB,WAAW;AAChC,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mBAAmB;AAC5D;AACA;AACA,2CAA2C,iCAAiC;AAC5E;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA,2CAA2C,iCAAiC;AAC5E;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gCAAgC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gCAAgC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B,yBAAyB,QAAQ;AACjC;AACA;AACA,8BAA8B,WAAW;AACzC,kCAAkC,WAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B,yBAAyB,QAAQ;AACjC;AACA;AACA,8BAA8B,WAAW;AACzC,kCAAkC,WAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B,yBAAyB,QAAQ;AACjC;AACA;AACA,8BAA8B,WAAW;AACzC,kCAAkC,WAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,0BAA0B;AACjG;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,eAAe;AACnC,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA,qCAAqC,aAAa;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA,qCAAqC,aAAa;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,6BAA6B;AAChE;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,mEAAmE,8BAA8B;AACjG;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA,qCAAqC;AACrC,2CAA2C;AAC3C,0CAA0C;AAC1C,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,2CAA2C,wBAAwB;AACnE;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA,0CAA0C,wBAAwB;AAClE;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA,+CAA+C;AAC/C,yDAAyD;AACzD,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,yCAAyC,yBAAyB;AAClE;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,2CAA2C,yBAAyB;AACpE;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA,0CAA0C,yBAAyB;AACnE;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,2CAA2C,yBAAyB;AACpE;AACA;AACA;AACA,aAAa,MAAM;AACnB,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,oEAAoE,8BAA8B,KAAK,yBAAyB;AAChI;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA,CAAC;;;;;;;;;;;;;AC51jBD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;ACvLtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE,KAA0B,oBAAoB,SAAE;AAClD;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxtBA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,sBAAsB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;;;;;;;;;ACzLD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,uCAAuC;AACvC,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACrOD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,mBAAO,CAAC,iEAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS,sBAAsB;AACxD,KAAK;AACL;AACA;AACA,yBAAyB,SAAS,yBAAyB;AAC3D,KAAK;AACL;AACA;AACA,yBAAyB,SAAS,yBAAyB;AAC3D;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+B;;;;;;;;;;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,0CAA0C,mBAAmB;AAC7D,8CAA8C;AAC9C,8CAA8C;AAC9C,kDAAkD;AAClD,SAAS;AACT;AACA,0FAA0F,kFAAkF;;AAE5K,mDAAmD,wDAAwD;AAC3G;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF;AACxF,0CAA0C;AAC1C;AACA;AACA,oCAAoC,GAAG;AACvC;AACA,wEAAwE,GAAG;AAC3E;AACA,gEAAgE,GAAG;AACnE;AACA,wDAAwD,oCAAoC,OAAO;AACnG,wDAAwD,kCAAkC,OAAO;AACjG,uDAAuD,iCAAiC,OAAO;AAC/F,0DAA0D,+BAA+B,OAAO;AAChG,uDAAuD,yBAAyB;AAChF,uDAAuD,qCAAqC,OAAO;AACnG;AACA;AACA,yBAAyB;AACzB,yCAAyC;AACzC;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,0BAA0B;AAC1B,0EAA0E;AAC1E,iFAAiF;AACjF;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,2DAA2D,sDAAsD,uDAAuD;AACxK;AACA,SAAS;AACT;AACA,sCAAsC;AACtC,SAAS;AACT;AACA;AACA,2DAA2D,YAAY,oBAAoB,sCAAsC,KAAK;AACtI,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;;AAEA,QAAQ,IAA0B;AAClC;AACA,KAAK,MAAM,EAMN;AACL;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;AChID,eAAe,KAAiD,kBAAkB,mBAAO,CAAC,6DAAW,GAAG,SAAgL,CAAC,iDAAiD,mBAAmB,SAAS,cAAc,4BAA4B,YAAY,qBAAqB,2DAA2D,uCAAuC,qCAAqC,oBAAoB,EAAE,iBAAiB,4FAA4F,eAAe,wCAAwC,SAAS,EAAE,mBAAmB,8BAA8B,qDAAqD,0BAA0B,6CAA6C,sBAAsB,6DAA6D,YAAY,eAAe,SAAS,iBAAiB,iCAAiC,iBAAiB,YAAY,UAAU,sBAAsB,mBAAmB,iDAAiD,iBAAiB,gBAAgB,YAAY,iBAAiB,aAAa,qCAAqC,SAAS,8BAA8B,SAAS,GAAG,iGAAiG,aAAa,oCAAoC,YAAY,mBAAmB,KAAK,mBAAmB,sEAAsE,SAAS,wBAAwB,kBAAkB,0DAA0D,eAAe,WAAW,IAAI,wIAAwI,qCAAqC,kBAAkB,OAAO,4BAA4B,QAAQ,uBAAuB,KAAK,oBAAoB,EAAE,QAAQ,OAAO,+CAA+C,qHAAqH,SAAS,+BAA+B,OAAO,2BAA2B,SAAS,8BAA8B,UAAU,WAAW,yBAAyB,iBAAiB,OAAO,SAAS,oBAAoB,WAAW,aAAa,qBAAqB,iCAAiC,iCAAiC,gEAAgE,8CAA8C,IAAI,sBAAsB,kCAAkC,GAAG,8MAA8M,aAAa,GAAG,UAAU,mBAAmB,qDAAqD,qBAAqB,sBAAsB,2BAA2B,yBAAyB,GAAG,oBAAoB,uCAAuC,oBAAoB,kCAAkC,uBAAuB,sBAAsB,2BAA2B,wFAAwF,QAAQ,QAAQ,4BAA4B,kBAAkB,uBAAuB,YAAY,yCAAyC,gCAAgC,IAAI,mBAAmB,oDAAoD,0BAA0B,kGAAkG,iBAAiB,mBAAmB,4CAA4C,YAAY,YAAY,WAAW,G;;;;;;;;;;;;ACAv1H;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACoC;;AAEpC;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB,cAAc,uBAAuB;AACrC,cAAc,OAAO;AACrB,cAAc,MAAM;AACpB;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,MAAM;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B;;AAEA,6CAA6C;AAC7C,0CAA0C;AAC1C,oEAAoE;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6OAA6O,+CAA+C,8CAA8C,2GAA2G,0EAA0E;AAC/f;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,gCAAgC;AAChC,OAAO;AACP,MAAM,yDAAM;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe,qEAAM,EAAC;;;;;;;;;;;;;AC9NtB;AAAA;AAAA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjGA;AACA,IAAI,IAAyD;AAC7D;AACA,MAAM,EAKmC;AACzC,CAAC;AACD,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gCAAgC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,kBAAkB;AAClF;AACA,yDAAyD,cAAc;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iCAAiC;AAClF,wHAAwH,mBAAmB,EAAE;AAC7I;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG,+BAA+B;AAClC;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,UAAU;AAChC,GAAG;AACH,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,iCAAiC,EAAE;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wDAAwD,OAAO;;AAE/D;AACA;AACA,GAAG,0EAA0E;AAC7E;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;AAIA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS,EAAE;AACzD,CAAC,gBAAgB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,YAAY;AACtB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,mDAAmD;AACnD,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC,6BAA6B,0BAA0B,YAAY,EAAE;AAC1G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,GAAG,eAAe;AACrB;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,UAAU;AACV,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG,8DAA8D;AACjE;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iDAAiD,eAAe;;AAEhE;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO,WAAW;AAC7B,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,YAAY,eAAe;AAChC;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,gFAAgF;AACnF;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mCAAmC;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,eAAe;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,uEAAuE;AACvE;;;AAGA,OAAO;;AAEP;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA,qEAAqE;AACrE,CAAC;AACD;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,gDAAgD;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,OAAO,gCAAgC;AAC1E;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG,IAAI,OAAO;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,cAAc,EAAE;AAC7D,wBAAwB,+CAA+C;AACvE,CAAC,qCAAqC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uCAAuC;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,EAAE;AACjB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA,iCAAiC,YAAY;AAC7C,mDAAmD,gBAAgB;AACnE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gCAAgC,6BAA6B,EAAE,aAAa;AAC5G,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qDAAqD,mCAAmC,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA,6CAA6C,gBAAgB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,WAAW,UAAU;AACrB,aAAa;AACb;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,6CAA6C,yBAAyB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,kCAAkC,iEAAiE;AACnG;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,8CAA8C;AAC9C,CAAC;AACD;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,2CAA2C;AAC7E;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,eAAe,uBAAuB;AACtC;AACA,eAAe,yBAAyB;AACxC;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uBAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA,4BAA4B;;AAE5B,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,8jB;;AAEA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA,YAAY,kBAAkB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,4CAA4C;AACrF,6CAA6C,4CAA4C;AACzF,+CAA+C,4CAA4C;AAC3F,KAAK,qBAAqB,sCAAsC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,mBAAmB;AACnC;AACA;AACA,yCAAyC,kCAAkC;AAC3E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,SAAS,qFAAqF;AACnG;;AAEA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA,iCAAiC,MAAM,mBAAmB,UAAU,EAAE,EAAE;AACxE,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qBAAqB;AAChC,aAAa,OAAO;AACpB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,UAAU;AACV;AACA;AACA,4BAA4B;AAC5B,CAAC;;AAED;;AAEA,4BAA4B;;AAE5B,OAAO;;AAEP;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG,+CAA+C;AAClD,gCAAgC;AAChC;AACA;AACA;AACA;AACA,2CAA2C,YAAY;AACvD;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;AACA,6DAA6D,0CAA0C;AACvG;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG,sEAAsE;AACzE;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,sBAAsB,yCAAyC,WAAW,IAAI;AAC9E,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF;AACzF;AACA,KAAK;AACL;AACA,mDAAmD,iDAAiD;AACpG,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,kCAAkC;AAChH;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gFAAgF,eAAe;AAC/F;AACA;AACA;;AAEA,GAAG,yEAAyE;AAC5E;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED,GAAG,qDAAqD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B,mBAAmB,EAAE;AAC/C,0BAA0B,oBAAoB;AAC9C,CAAC;;AAED,GAAG,2EAA2E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,uDAAuD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,GAAG,0DAA0D,kCAAkC,EAAE,GAAG;AACpG;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY,QAAQ;AACzC;AACA,0CAA0C;AAC1C,GAAG;;AAEH,KAAK,4DAA4D;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG,0EAA0E;AAC7E;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,GAAG,2DAA2D;AAC9D;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C,SAAS,EAAE;AAC1D,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD,KAAK;AACL;AACA,oCAAoC,cAAc,OAAO;AACzD,qCAAqC,cAAc,OAAO;AAC1D;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,qCAAqC,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;;AAEA,GAAG,2DAA2D;AAC9D;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,6BAA6B,UAAU;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb,yCAAyC,iCAAiC;AAC1E;;AAEA;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6CAA6C,eAAe,EAAE;;AAE9D;AACA;AACA,GAAG,4DAA4D;AAC/D;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB,qDAAqD;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,eAAe;AACzB;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,8BAA8B;AAC9B,+BAA+B;AAC/B,+BAA+B;AAC/B,2CAA2C;AAC3C,SAAS,iCAAiC;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,iCAAiC;AACjC,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,4BAA4B;AAC3C,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,mBAAmB;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA,kDAAkD;;AAElD;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,4BAA4B;;AAE5B,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yDAAyD,wBAAwB;;AAEjF;AACA;AACA,GAAG,2FAA2F;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG,iEAAiE;AACpE;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA,mCAAmC;AACnC;;AAEA;AACA,gFAAgF,OAAO;;AAEvF;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oDAAoD,eAAe;AACnE;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uCAAuC,iCAAiC;AACxE;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uCAAuC;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;;AAEA,2BAA2B,mBAAmB,aAAa;;AAE3D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,gBAAgB;AAChB;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,4CAA4C;AAC5E;AACA;AACA,2BAA2B,uCAAuC;AAClE;AACA;;AAEA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,gFAAgF;AACnF;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA,8CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B;;AAE5B,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG,mDAAmD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,KAAK,6BAA6B;AAClC;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,8BAA8B;AAC9B,gCAAgC;AAChC,UAAU;AACV,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6CAA6C,mCAAmC,EAAE;AAClF;;AAEA;AACA;AACA,GAAG,mEAAmE;AACtE;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,8jB;;AAEA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,8jB;;AAEA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD,kBAAkB,EAAE;;AAEpE;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,mBAAmB;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO,YAAY;AAC9B,WAAW,QAAQ;AACnB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,4BAA4B;;AAE5B,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;;;;;;;;;;AAUA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO,EAAE;AACT;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,8H;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;AAMA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,sBAAsB;AAC5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA,6DAA6D,gBAAgB;AAC7E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,6CAA6C,KAAK,uCAAuC;AACnH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;;;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wDAAwD;AACxD;AACA,OAAO;;AAEP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG,IAAI;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG,IAAI;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA,8DAA8D;AAC9D;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uEAAuE;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,8DAA8D;AAC9D;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,oCAAoC;AACpC,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,4DAA4D;AAC5D;;AAEA,kDAAkD;AAClD;AACA,KAAK;AACL,8CAA8C;AAC9C;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,6EAA6E;AAC7E;AACA,KAAK;;AAEL;AACA;AACA;AACA,kEAAkE;AAClE;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,wDAAwD;AACxD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,yCAAyC;AACzC;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,0BAA0B;AACnD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI;AACL;AACA;AACA;AACA,CAAC,IAAI;AACL;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,6BAA6B;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;AAQA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;AASA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;;AAE9D;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA,SAAS;AACT;AACA;;AAEA,wDAAwD;AACxD;AACA,SAAS;AACT,4DAA4D;AAC5D;AACA,SAAS,GAAG;;AAEZ;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS,GAAG;;AAEZ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,4DAA4D;AAC5D;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,4DAA4D;AAC5D;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,aAAa;AACb;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA,kH;AACA;AACA;;AAEA;AACA;;;;;;AAMA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC,SAAS;AACjD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;AASA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,iCAAiC;AACjC,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,iCAAiC;AACjC,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA,kH;AACA;AACA;;AAEA;AACA;;;;;;AAMA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;;;;;;;AAQA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA,yCAAyC;;AAEzC;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA,gH;AACA;AACA;;;;;AAKA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,gBAAgB;AAChB;AACA,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA,4BAA4B;AAC5B;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA,8BAA8B,iBAAiB;AAC/C;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC;;;AAGrC;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,gEAAgE,iBAAiB;;AAEjF;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAe;;AAEtB;;AAEA,+DAA+D,0BAA0B;AACzF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,8BAA8B,UAAU;AACxC;AACA,OAAO;AACP;AACA,8BAA8B;AAC9B;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET,uBAAuB,eAAe;AACtC;AACA;AACA;;AAEA,yBAAyB,kBAAkB;AAC3C;AACA;;AAEA,yBAAyB,yBAAyB;AAClD;AACA,SAAS;;;AAGT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA,OAAO;AACP;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,6BAA6B;;AAE7B;;AAEA;AACA;AACA,OAAO,iBAAiB;AACxB;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;;AAET,gEAAgE;;;AAGhE;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,iBAAiB;;AAExB;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;;;AAGP;AACA,8CAA8C;;AAE9C;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA,kCAAkC,iBAAiB;;AAEnD,yCAAyC,+CAA+C;AACxF;AACA;AACA;AACA;AACA;;AAEA,8CAA8C,+BAA+B;AAC7E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,4CAA4C;;AAE5C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA,kCAAkC,iBAAiB;;AAEnD;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,iEAAiE,iBAAiB;AAClF;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,gEAAgE,iBAAiB;AACjF;AACA;AACA;AACA,OAAO;;AAEP;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA,OAAO;AACP,uCAAuC,iBAAiB;AACxD;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,kCAAkC;AAClC,qCAAqC;AACrC;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA,kCAAkC,mBAAmB;AACrD;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA,kCAAkC,mBAAmB;AACrD;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA,mCAAmC,eAAe,gDAAgD;AAClG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,6BAA6B;AAC7B;AACA,KAAK;AACL;AACA,gCAAgC;AAChC,mCAAmC;AACnC;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA,kH;AACA;AACA;;AAEA;AACA;;;;;;AAMA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;;;;;;;;;;AAgBA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,qFAAqF,mBAAmB,WAAW;AACnH,OAAO;AACP,oCAAoC,mBAAmB;AACvD,OAAO;;;AAGP;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA,wCAAwC;;AAExC;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,WAAW;AACX,SAAS,EAAE;AACX;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;;AAEA,qBAAqB,+CAA+C;AACpE;;AAEA,uBAAuB,+BAA+B;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA,4H;AACA;AACA;;;;;AAKA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;;;;AAIA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,8BAA8B;;AAErF;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,gFAAgF;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP,UAAU;AACV,CAAC;AACD,kD;;;;;;;;;;;;ACpyVA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;;AAEyC;;AAEzC;;AAEA;AACA;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;;AAEA,eAAe,6DAAY;AAC3B;;AAEA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAY;AAC3B;AACA,KAAK;AACL;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA,YAAY,uBAAuB;AACnC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7NA;AAAA;AAAA;AACA;AACA;AACA;AACe;AACf;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wBAAwB;AAC3D,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAA4D;AAC9D,EAAE,SACiD;AACnD,CAAC,oBAAoB;;AAErB;;AAEA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA,wBAAwB,+BAA+B;AACvD,wBAAwB,iBAAiB;AACzC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,oDAAoD,iCAAiC,EAAE;AACvF,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,cAAc;;AAE7C;;AAEA;AACA;AACA;AACA,+BAA+B,UAAU;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC,oCAAoC;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,GAAG;AACV;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA,sCAAsC;AACtC;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC,yCAAyC,wBAAwB,EAAE;AACnE,4BAA4B;;AAE5B;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,YAAY;AACtC,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,0CAA0C,EAAE;AAC5C;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oBAAoB,EAAE;AACvD;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,SAAS,qBAAqB;;AAE1D;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D,mCAAmC,sBAAsB;AACzD;AACA,oBAAoB;AACpB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,qBAAqB,mBAAmB;AACxC,iCAAiC;AACjC;AACA,KAAK;AACL;AACA;AACA;AACA,oBAAoB,YAAY;AAChC,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,sCAAsC;AACtC;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,qCAAqC,EAAE;AACtF;;AAEA;AACA;AACA;;AAEA,sCAAsC,yCAAyC,EAAE;AACjF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA,8BAA8B;AAC9B,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sDAAsD,EAAE;AACxF;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iCAAiC;AACrE,gBAAgB,6BAA6B;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,iCAAiC;AACrE,gBAAgB,6BAA6B;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C,KAAK;AACL;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,qBAAqB;AACpC;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,iBAAiB;AACtC;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,wBAAwB,mBAAmB;AAC3C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA,KAAK;AACL;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,8CAA8C,eAAe;AAC7D,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,oDAAoD;AACpD,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,uCAAuC,gEAAgE;AACvG;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,8BAA8B,+BAA+B;AAC7D,8BAA8B,+BAA+B;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA,qCAAqC;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,uFAAuF;AAC9F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;AAC5C,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK,+BAA+B;AACpC,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,sBAAsB,oBAAoB;AAC1C,wBAAwB,4BAA4B;AACpD;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB;AACrB,2BAA2B;AAC3B;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,6CAA6C;AAChF;AACA;AACA,+CAA+C,4CAA4C;;AAE3F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO,2CAA2C,8BAA8B,EAAE;;AAElF;AACA,0CAA0C,OAAO;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;;AAE5B,oBAAoB;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oBAAoB,EAAE;;AAEtD;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,sBAAsB;AACtB;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD,uBAAuB,+BAA+B;AACtD;AACA;AACA,KAAK;AACL,2BAA2B;AAC3B;AACA,wBAAwB,iCAAiC;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,4CAA4C,2BAA2B,EAAE;AACzE,OAAO;AACP;AACA,4CAA4C,4BAA4B,EAAE;AAC1E,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,sBAAsB;;AAEvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;;AAElC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,aAAa;AACnC;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,kBAAkB;AACjC;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA6D;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA,0BAA0B;AAC1B;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,gCAAgC;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,oBAAoB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2DAA2D,UAAU;AACrE,mBAAmB,wBAAwB,OAAO,uBAAuB;AACzE;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;;AAEA;AACA,YAAY,oBAAoB;AAChC;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS,kDAAkD;AAC3D;AACA;AACA;AACA;AACA,SAAS,kDAAkD;AAC3D;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC,gEAAgE;AACrG;AACA;AACA;AACA,kCAAkC;AAClC;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,SAAS;AAClC;AACA,6CAA6C;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,uBAAuB,OAAO,gCAAgC;AACjF,0DAA0D,oBAAoB;AAC9E;AACA;AACA;AACA,6BAA6B,gEAAgE;AAC7F,SAAS;AACT;AACA;AACA;AACA,qCAAqC,iCAAiC;AACtE;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,6DAA6D,oBAAoB;AACjF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,gCAAgC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,uBAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,6BAA6B;AAC3D;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wBAAwB;AACrD;AACA;AACA;AACA;AACA,iCAAiC,yBAAyB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,yBAAyB;AAC5D;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,8BAA8B;AACrD;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8EAA8E;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA,0CAA0C,kBAAkB;AAC5D,OAAO;AACP,0CAA0C,kBAAkB;AAC5D,OAAO;AACP,0CAA0C,0BAA0B;AACpE,OAAO;AACP,0CAA0C,iBAAiB;AAC3D,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA,qCAAqC;AACrC,qCAAqC;AACrC,6CAA6C;AAC7C,6BAA6B;AAC7B,6BAA6B;AAC7B,8BAA8B;AAC9B,8BAA8B;AAC9B,6BAA6B;AAC7B,6BAA6B;AAC7B;AACA,yBAAyB;AACzB;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC,eAAe,EAAE,uBAAuB,UAAU,EAAE;AACtF;AACA;;AAEA;AACA,qDAAqD,6CAA6C;AAClG;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B,6CAA6C;AAC1E;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,2BAA2B;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD;AACvD,KAAK;AACL,2CAA2C;AAC3C;;AAEA,mCAAmC,wCAAwC;AAC3E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0DAA0D,mBAAmB;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,aAAa;AACtC,yBAAyB,aAAa;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF,8BAA8B;AAC9B;AACA,6BAA6B;AAC7B,0BAA0B,iEAAiE;AAC3F,cAAc,0FAA0F;AACxG,QAAQ,KAAK,0CAA0C;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,kBAAkB;AACjE,wBAAwB,+CAA+C;AACvE,mDAAmD;;AAEnD;AACA,wDAAwD;AACxD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2BAA2B;AACxD,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6CAA6C,EAAE;AACxD;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,YAAY;AACZ;AACA,yCAAyC,SAAS;AAClD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sDAAsD,4BAA4B,EAAE;AACpF,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sDAAsD,+BAA+B,EAAE;AACvF,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAAgD,aAAa;;AAE7D;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,mCAAmC,qCAAqC;;AAExE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uCAAuC,EAAE;AACtF;AACA;AACA;AACA,+CAA+C,2CAA2C,EAAE;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,8BAA8B,EAAE;AACvE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oCAAoC,uCAAuC;;AAE3E,uCAAuC,0BAA0B;;AAEjE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA,kEAAkE,sBAAsB,EAAE;AAC1F;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA;AACA,aAAa,uBAAuB;AACpC,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,2BAA2B;AACpD;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,yBAAyB,EAAE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA,wBAAwB,EAAE,iBAAiB,EAAE;AAC7C,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,GAAG;;;;AAIH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT,SAAS;AACT,WAAW;AACX,UAAU;AACV,UAAU;AACV,SAAS;AACT,UAAU;AACV;AACA,6CAA6C;AAC7C,gEAAgE;;AAEhE;AACA;AACA,uDAAuD,2DAA2D;;AAElH;AACA;AACA,+CAA+C,2BAA2B,EAAE;AAC5E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oFAAoF,6BAA6B;AACjH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,uGAAuG;AAC3H;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,eAAe;AACzC,wBAAwB,aAAa;;AAErC;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,UAAU;AAChD;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,iDAAiD;;AAErF;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa,6DAA6D;AAC1E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,uBAAuB,EAAE;AACxF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,uBAAuB,0BAA0B;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oBAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS,4BAA4B;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,wBAAwB,EAAE;AAC5D;AACA;AACA;;AAEA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,WAAW;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA,yDAAyD,WAAW;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,+BAA+B;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC,2CAA2C,GAAG;;AAErF;AACA,oCAAoC;AACpC,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,uBAAuB,sCAAsC;AAC7D;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA,qDAAqD,4BAA4B,EAAE;AACnF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,+EAA+E;AAC/G,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,8CAA8C,gCAAgC,EAAE;AAChF,2CAA2C,0CAA0C,EAAE;AACvF;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2BAA2B;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,iDAAiD;AACzF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,yCAAyC,iDAAiD;AAC1F;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,uCAAuC;AACnF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA,uDAAuD;AACvD;AACA,QAAQ;AACR;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA,eAAe,oBAAoB;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6BAA6B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6GAA6G;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,sUAAsU;AACvV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB,iCAAiC,4EAA4E,qBAAqB,aAAa,GAAG,EAAE,kBAAkB;AACvN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,yCAAyC,EAAE;AACtE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,cAAc,0EAA0E;AACxF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,sBAAsB,EAAE;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA,iEAAiE,oCAAoC,EAAE;AACvG;AACA;AACA;AACA;AACA,iEAAiE,gCAAgC,EAAE;AACnG;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qFAAqF;AACrF;AACA;AACA;AACA;AACA,SAAS,EAAE,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,oBAAoB,mCAAmC;AACvD;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+EAA+E,GAAG;;AAElF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA,+BAA+B,+BAA+B;AAC9D,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB,oBAAoB,eAAe;AACnC;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA,KAAK;AACL,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA,gDAAgD,mBAAmB,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uBAAuB,EAAE;AACzE,WAAW;AACX,kDAAkD,qBAAqB,EAAE;AACzE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC","file":"js/vendors.js","sourcesContent":["/* axios v0.19.2 | (c) 2020 by Matt Zabriskie */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"axios\"] = factory();\n\telse\n\t\troot[\"axios\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1);\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\tvar bind = __webpack_require__(3);\n\tvar Axios = __webpack_require__(4);\n\tvar mergeConfig = __webpack_require__(22);\n\tvar defaults = __webpack_require__(10);\n\t\n\t/**\n\t * Create an instance of Axios\n\t *\n\t * @param {Object} defaultConfig The default config for the instance\n\t * @return {Axios} A new instance of Axios\n\t */\n\tfunction createInstance(defaultConfig) {\n\t var context = new Axios(defaultConfig);\n\t var instance = bind(Axios.prototype.request, context);\n\t\n\t // Copy axios.prototype to instance\n\t utils.extend(instance, Axios.prototype, context);\n\t\n\t // Copy context to instance\n\t utils.extend(instance, context);\n\t\n\t return instance;\n\t}\n\t\n\t// Create the default instance to be exported\n\tvar axios = createInstance(defaults);\n\t\n\t// Expose Axios class to allow class inheritance\n\taxios.Axios = Axios;\n\t\n\t// Factory for creating new instances\n\taxios.create = function create(instanceConfig) {\n\t return createInstance(mergeConfig(axios.defaults, instanceConfig));\n\t};\n\t\n\t// Expose Cancel & CancelToken\n\taxios.Cancel = __webpack_require__(23);\n\taxios.CancelToken = __webpack_require__(24);\n\taxios.isCancel = __webpack_require__(9);\n\t\n\t// Expose all/spread\n\taxios.all = function all(promises) {\n\t return Promise.all(promises);\n\t};\n\taxios.spread = __webpack_require__(25);\n\t\n\tmodule.exports = axios;\n\t\n\t// Allow use of default import syntax in TypeScript\n\tmodule.exports.default = axios;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar bind = __webpack_require__(3);\n\t\n\t/*global toString:true*/\n\t\n\t// utils is a library of generic helper functions non-specific to axios\n\t\n\tvar toString = Object.prototype.toString;\n\t\n\t/**\n\t * Determine if a value is an Array\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is an Array, otherwise false\n\t */\n\tfunction isArray(val) {\n\t return toString.call(val) === '[object Array]';\n\t}\n\t\n\t/**\n\t * Determine if a value is undefined\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if the value is undefined, otherwise false\n\t */\n\tfunction isUndefined(val) {\n\t return typeof val === 'undefined';\n\t}\n\t\n\t/**\n\t * Determine if a value is a Buffer\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is a Buffer, otherwise false\n\t */\n\tfunction isBuffer(val) {\n\t return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n\t && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n\t}\n\t\n\t/**\n\t * Determine if a value is an ArrayBuffer\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n\t */\n\tfunction isArrayBuffer(val) {\n\t return toString.call(val) === '[object ArrayBuffer]';\n\t}\n\t\n\t/**\n\t * Determine if a value is a FormData\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is an FormData, otherwise false\n\t */\n\tfunction isFormData(val) {\n\t return (typeof FormData !== 'undefined') && (val instanceof FormData);\n\t}\n\t\n\t/**\n\t * Determine if a value is a view on an ArrayBuffer\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n\t */\n\tfunction isArrayBufferView(val) {\n\t var result;\n\t if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n\t result = ArrayBuffer.isView(val);\n\t } else {\n\t result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * Determine if a value is a String\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is a String, otherwise false\n\t */\n\tfunction isString(val) {\n\t return typeof val === 'string';\n\t}\n\t\n\t/**\n\t * Determine if a value is a Number\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is a Number, otherwise false\n\t */\n\tfunction isNumber(val) {\n\t return typeof val === 'number';\n\t}\n\t\n\t/**\n\t * Determine if a value is an Object\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is an Object, otherwise false\n\t */\n\tfunction isObject(val) {\n\t return val !== null && typeof val === 'object';\n\t}\n\t\n\t/**\n\t * Determine if a value is a Date\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is a Date, otherwise false\n\t */\n\tfunction isDate(val) {\n\t return toString.call(val) === '[object Date]';\n\t}\n\t\n\t/**\n\t * Determine if a value is a File\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is a File, otherwise false\n\t */\n\tfunction isFile(val) {\n\t return toString.call(val) === '[object File]';\n\t}\n\t\n\t/**\n\t * Determine if a value is a Blob\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is a Blob, otherwise false\n\t */\n\tfunction isBlob(val) {\n\t return toString.call(val) === '[object Blob]';\n\t}\n\t\n\t/**\n\t * Determine if a value is a Function\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is a Function, otherwise false\n\t */\n\tfunction isFunction(val) {\n\t return toString.call(val) === '[object Function]';\n\t}\n\t\n\t/**\n\t * Determine if a value is a Stream\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is a Stream, otherwise false\n\t */\n\tfunction isStream(val) {\n\t return isObject(val) && isFunction(val.pipe);\n\t}\n\t\n\t/**\n\t * Determine if a value is a URLSearchParams object\n\t *\n\t * @param {Object} val The value to test\n\t * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n\t */\n\tfunction isURLSearchParams(val) {\n\t return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n\t}\n\t\n\t/**\n\t * Trim excess whitespace off the beginning and end of a string\n\t *\n\t * @param {String} str The String to trim\n\t * @returns {String} The String freed of excess whitespace\n\t */\n\tfunction trim(str) {\n\t return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n\t}\n\t\n\t/**\n\t * Determine if we're running in a standard browser environment\n\t *\n\t * This allows axios to run in a web worker, and react-native.\n\t * Both environments support XMLHttpRequest, but not fully standard globals.\n\t *\n\t * web workers:\n\t * typeof window -> undefined\n\t * typeof document -> undefined\n\t *\n\t * react-native:\n\t * navigator.product -> 'ReactNative'\n\t * nativescript\n\t * navigator.product -> 'NativeScript' or 'NS'\n\t */\n\tfunction isStandardBrowserEnv() {\n\t if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n\t navigator.product === 'NativeScript' ||\n\t navigator.product === 'NS')) {\n\t return false;\n\t }\n\t return (\n\t typeof window !== 'undefined' &&\n\t typeof document !== 'undefined'\n\t );\n\t}\n\t\n\t/**\n\t * Iterate over an Array or an Object invoking a function for each item.\n\t *\n\t * If `obj` is an Array callback will be called passing\n\t * the value, index, and complete array for each item.\n\t *\n\t * If 'obj' is an Object callback will be called passing\n\t * the value, key, and complete object for each property.\n\t *\n\t * @param {Object|Array} obj The object to iterate\n\t * @param {Function} fn The callback to invoke for each item\n\t */\n\tfunction forEach(obj, fn) {\n\t // Don't bother if no value provided\n\t if (obj === null || typeof obj === 'undefined') {\n\t return;\n\t }\n\t\n\t // Force an array if not already something iterable\n\t if (typeof obj !== 'object') {\n\t /*eslint no-param-reassign:0*/\n\t obj = [obj];\n\t }\n\t\n\t if (isArray(obj)) {\n\t // Iterate over array values\n\t for (var i = 0, l = obj.length; i < l; i++) {\n\t fn.call(null, obj[i], i, obj);\n\t }\n\t } else {\n\t // Iterate over object keys\n\t for (var key in obj) {\n\t if (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t fn.call(null, obj[key], key, obj);\n\t }\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Accepts varargs expecting each argument to be an object, then\n\t * immutably merges the properties of each object and returns result.\n\t *\n\t * When multiple objects contain the same key the later object in\n\t * the arguments list will take precedence.\n\t *\n\t * Example:\n\t *\n\t * ```js\n\t * var result = merge({foo: 123}, {foo: 456});\n\t * console.log(result.foo); // outputs 456\n\t * ```\n\t *\n\t * @param {Object} obj1 Object to merge\n\t * @returns {Object} Result of all merge properties\n\t */\n\tfunction merge(/* obj1, obj2, obj3, ... */) {\n\t var result = {};\n\t function assignValue(val, key) {\n\t if (typeof result[key] === 'object' && typeof val === 'object') {\n\t result[key] = merge(result[key], val);\n\t } else {\n\t result[key] = val;\n\t }\n\t }\n\t\n\t for (var i = 0, l = arguments.length; i < l; i++) {\n\t forEach(arguments[i], assignValue);\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * Function equal to merge with the difference being that no reference\n\t * to original objects is kept.\n\t *\n\t * @see merge\n\t * @param {Object} obj1 Object to merge\n\t * @returns {Object} Result of all merge properties\n\t */\n\tfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n\t var result = {};\n\t function assignValue(val, key) {\n\t if (typeof result[key] === 'object' && typeof val === 'object') {\n\t result[key] = deepMerge(result[key], val);\n\t } else if (typeof val === 'object') {\n\t result[key] = deepMerge({}, val);\n\t } else {\n\t result[key] = val;\n\t }\n\t }\n\t\n\t for (var i = 0, l = arguments.length; i < l; i++) {\n\t forEach(arguments[i], assignValue);\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * Extends object a by mutably adding to it the properties of object b.\n\t *\n\t * @param {Object} a The object to be extended\n\t * @param {Object} b The object to copy properties from\n\t * @param {Object} thisArg The object to bind function to\n\t * @return {Object} The resulting value of object a\n\t */\n\tfunction extend(a, b, thisArg) {\n\t forEach(b, function assignValue(val, key) {\n\t if (thisArg && typeof val === 'function') {\n\t a[key] = bind(val, thisArg);\n\t } else {\n\t a[key] = val;\n\t }\n\t });\n\t return a;\n\t}\n\t\n\tmodule.exports = {\n\t isArray: isArray,\n\t isArrayBuffer: isArrayBuffer,\n\t isBuffer: isBuffer,\n\t isFormData: isFormData,\n\t isArrayBufferView: isArrayBufferView,\n\t isString: isString,\n\t isNumber: isNumber,\n\t isObject: isObject,\n\t isUndefined: isUndefined,\n\t isDate: isDate,\n\t isFile: isFile,\n\t isBlob: isBlob,\n\t isFunction: isFunction,\n\t isStream: isStream,\n\t isURLSearchParams: isURLSearchParams,\n\t isStandardBrowserEnv: isStandardBrowserEnv,\n\t forEach: forEach,\n\t merge: merge,\n\t deepMerge: deepMerge,\n\t extend: extend,\n\t trim: trim\n\t};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\tmodule.exports = function bind(fn, thisArg) {\n\t return function wrap() {\n\t var args = new Array(arguments.length);\n\t for (var i = 0; i < args.length; i++) {\n\t args[i] = arguments[i];\n\t }\n\t return fn.apply(thisArg, args);\n\t };\n\t};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\tvar buildURL = __webpack_require__(5);\n\tvar InterceptorManager = __webpack_require__(6);\n\tvar dispatchRequest = __webpack_require__(7);\n\tvar mergeConfig = __webpack_require__(22);\n\t\n\t/**\n\t * Create a new instance of Axios\n\t *\n\t * @param {Object} instanceConfig The default config for the instance\n\t */\n\tfunction Axios(instanceConfig) {\n\t this.defaults = instanceConfig;\n\t this.interceptors = {\n\t request: new InterceptorManager(),\n\t response: new InterceptorManager()\n\t };\n\t}\n\t\n\t/**\n\t * Dispatch a request\n\t *\n\t * @param {Object} config The config specific for this request (merged with this.defaults)\n\t */\n\tAxios.prototype.request = function request(config) {\n\t /*eslint no-param-reassign:0*/\n\t // Allow for axios('example/url'[, config]) a la fetch API\n\t if (typeof config === 'string') {\n\t config = arguments[1] || {};\n\t config.url = arguments[0];\n\t } else {\n\t config = config || {};\n\t }\n\t\n\t config = mergeConfig(this.defaults, config);\n\t\n\t // Set config.method\n\t if (config.method) {\n\t config.method = config.method.toLowerCase();\n\t } else if (this.defaults.method) {\n\t config.method = this.defaults.method.toLowerCase();\n\t } else {\n\t config.method = 'get';\n\t }\n\t\n\t // Hook up interceptors middleware\n\t var chain = [dispatchRequest, undefined];\n\t var promise = Promise.resolve(config);\n\t\n\t this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n\t chain.unshift(interceptor.fulfilled, interceptor.rejected);\n\t });\n\t\n\t this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n\t chain.push(interceptor.fulfilled, interceptor.rejected);\n\t });\n\t\n\t while (chain.length) {\n\t promise = promise.then(chain.shift(), chain.shift());\n\t }\n\t\n\t return promise;\n\t};\n\t\n\tAxios.prototype.getUri = function getUri(config) {\n\t config = mergeConfig(this.defaults, config);\n\t return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n\t};\n\t\n\t// Provide aliases for supported request methods\n\tutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n\t /*eslint func-names:0*/\n\t Axios.prototype[method] = function(url, config) {\n\t return this.request(utils.merge(config || {}, {\n\t method: method,\n\t url: url\n\t }));\n\t };\n\t});\n\t\n\tutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n\t /*eslint func-names:0*/\n\t Axios.prototype[method] = function(url, data, config) {\n\t return this.request(utils.merge(config || {}, {\n\t method: method,\n\t url: url,\n\t data: data\n\t }));\n\t };\n\t});\n\t\n\tmodule.exports = Axios;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\t\n\tfunction encode(val) {\n\t return encodeURIComponent(val).\n\t replace(/%40/gi, '@').\n\t replace(/%3A/gi, ':').\n\t replace(/%24/g, '$').\n\t replace(/%2C/gi, ',').\n\t replace(/%20/g, '+').\n\t replace(/%5B/gi, '[').\n\t replace(/%5D/gi, ']');\n\t}\n\t\n\t/**\n\t * Build a URL by appending params to the end\n\t *\n\t * @param {string} url The base of the url (e.g., http://www.google.com)\n\t * @param {object} [params] The params to be appended\n\t * @returns {string} The formatted url\n\t */\n\tmodule.exports = function buildURL(url, params, paramsSerializer) {\n\t /*eslint no-param-reassign:0*/\n\t if (!params) {\n\t return url;\n\t }\n\t\n\t var serializedParams;\n\t if (paramsSerializer) {\n\t serializedParams = paramsSerializer(params);\n\t } else if (utils.isURLSearchParams(params)) {\n\t serializedParams = params.toString();\n\t } else {\n\t var parts = [];\n\t\n\t utils.forEach(params, function serialize(val, key) {\n\t if (val === null || typeof val === 'undefined') {\n\t return;\n\t }\n\t\n\t if (utils.isArray(val)) {\n\t key = key + '[]';\n\t } else {\n\t val = [val];\n\t }\n\t\n\t utils.forEach(val, function parseValue(v) {\n\t if (utils.isDate(v)) {\n\t v = v.toISOString();\n\t } else if (utils.isObject(v)) {\n\t v = JSON.stringify(v);\n\t }\n\t parts.push(encode(key) + '=' + encode(v));\n\t });\n\t });\n\t\n\t serializedParams = parts.join('&');\n\t }\n\t\n\t if (serializedParams) {\n\t var hashmarkIndex = url.indexOf('#');\n\t if (hashmarkIndex !== -1) {\n\t url = url.slice(0, hashmarkIndex);\n\t }\n\t\n\t url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n\t }\n\t\n\t return url;\n\t};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\t\n\tfunction InterceptorManager() {\n\t this.handlers = [];\n\t}\n\t\n\t/**\n\t * Add a new interceptor to the stack\n\t *\n\t * @param {Function} fulfilled The function to handle `then` for a `Promise`\n\t * @param {Function} rejected The function to handle `reject` for a `Promise`\n\t *\n\t * @return {Number} An ID used to remove interceptor later\n\t */\n\tInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n\t this.handlers.push({\n\t fulfilled: fulfilled,\n\t rejected: rejected\n\t });\n\t return this.handlers.length - 1;\n\t};\n\t\n\t/**\n\t * Remove an interceptor from the stack\n\t *\n\t * @param {Number} id The ID that was returned by `use`\n\t */\n\tInterceptorManager.prototype.eject = function eject(id) {\n\t if (this.handlers[id]) {\n\t this.handlers[id] = null;\n\t }\n\t};\n\t\n\t/**\n\t * Iterate over all the registered interceptors\n\t *\n\t * This method is particularly useful for skipping over any\n\t * interceptors that may have become `null` calling `eject`.\n\t *\n\t * @param {Function} fn The function to call for each interceptor\n\t */\n\tInterceptorManager.prototype.forEach = function forEach(fn) {\n\t utils.forEach(this.handlers, function forEachHandler(h) {\n\t if (h !== null) {\n\t fn(h);\n\t }\n\t });\n\t};\n\t\n\tmodule.exports = InterceptorManager;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\tvar transformData = __webpack_require__(8);\n\tvar isCancel = __webpack_require__(9);\n\tvar defaults = __webpack_require__(10);\n\t\n\t/**\n\t * Throws a `Cancel` if cancellation has been requested.\n\t */\n\tfunction throwIfCancellationRequested(config) {\n\t if (config.cancelToken) {\n\t config.cancelToken.throwIfRequested();\n\t }\n\t}\n\t\n\t/**\n\t * Dispatch a request to the server using the configured adapter.\n\t *\n\t * @param {object} config The config that is to be used for the request\n\t * @returns {Promise} The Promise to be fulfilled\n\t */\n\tmodule.exports = function dispatchRequest(config) {\n\t throwIfCancellationRequested(config);\n\t\n\t // Ensure headers exist\n\t config.headers = config.headers || {};\n\t\n\t // Transform request data\n\t config.data = transformData(\n\t config.data,\n\t config.headers,\n\t config.transformRequest\n\t );\n\t\n\t // Flatten headers\n\t config.headers = utils.merge(\n\t config.headers.common || {},\n\t config.headers[config.method] || {},\n\t config.headers\n\t );\n\t\n\t utils.forEach(\n\t ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n\t function cleanHeaderConfig(method) {\n\t delete config.headers[method];\n\t }\n\t );\n\t\n\t var adapter = config.adapter || defaults.adapter;\n\t\n\t return adapter(config).then(function onAdapterResolution(response) {\n\t throwIfCancellationRequested(config);\n\t\n\t // Transform response data\n\t response.data = transformData(\n\t response.data,\n\t response.headers,\n\t config.transformResponse\n\t );\n\t\n\t return response;\n\t }, function onAdapterRejection(reason) {\n\t if (!isCancel(reason)) {\n\t throwIfCancellationRequested(config);\n\t\n\t // Transform response data\n\t if (reason && reason.response) {\n\t reason.response.data = transformData(\n\t reason.response.data,\n\t reason.response.headers,\n\t config.transformResponse\n\t );\n\t }\n\t }\n\t\n\t return Promise.reject(reason);\n\t });\n\t};\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\t\n\t/**\n\t * Transform the data for a request or a response\n\t *\n\t * @param {Object|String} data The data to be transformed\n\t * @param {Array} headers The headers for the request or response\n\t * @param {Array|Function} fns A single function or Array of functions\n\t * @returns {*} The resulting transformed data\n\t */\n\tmodule.exports = function transformData(data, headers, fns) {\n\t /*eslint no-param-reassign:0*/\n\t utils.forEach(fns, function transform(fn) {\n\t data = fn(data, headers);\n\t });\n\t\n\t return data;\n\t};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\tmodule.exports = function isCancel(value) {\n\t return !!(value && value.__CANCEL__);\n\t};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\tvar normalizeHeaderName = __webpack_require__(11);\n\t\n\tvar DEFAULT_CONTENT_TYPE = {\n\t 'Content-Type': 'application/x-www-form-urlencoded'\n\t};\n\t\n\tfunction setContentTypeIfUnset(headers, value) {\n\t if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n\t headers['Content-Type'] = value;\n\t }\n\t}\n\t\n\tfunction getDefaultAdapter() {\n\t var adapter;\n\t if (typeof XMLHttpRequest !== 'undefined') {\n\t // For browsers use XHR adapter\n\t adapter = __webpack_require__(12);\n\t } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n\t // For node use HTTP adapter\n\t adapter = __webpack_require__(12);\n\t }\n\t return adapter;\n\t}\n\t\n\tvar defaults = {\n\t adapter: getDefaultAdapter(),\n\t\n\t transformRequest: [function transformRequest(data, headers) {\n\t normalizeHeaderName(headers, 'Accept');\n\t normalizeHeaderName(headers, 'Content-Type');\n\t if (utils.isFormData(data) ||\n\t utils.isArrayBuffer(data) ||\n\t utils.isBuffer(data) ||\n\t utils.isStream(data) ||\n\t utils.isFile(data) ||\n\t utils.isBlob(data)\n\t ) {\n\t return data;\n\t }\n\t if (utils.isArrayBufferView(data)) {\n\t return data.buffer;\n\t }\n\t if (utils.isURLSearchParams(data)) {\n\t setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n\t return data.toString();\n\t }\n\t if (utils.isObject(data)) {\n\t setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n\t return JSON.stringify(data);\n\t }\n\t return data;\n\t }],\n\t\n\t transformResponse: [function transformResponse(data) {\n\t /*eslint no-param-reassign:0*/\n\t if (typeof data === 'string') {\n\t try {\n\t data = JSON.parse(data);\n\t } catch (e) { /* Ignore */ }\n\t }\n\t return data;\n\t }],\n\t\n\t /**\n\t * A timeout in milliseconds to abort a request. If set to 0 (default) a\n\t * timeout is not created.\n\t */\n\t timeout: 0,\n\t\n\t xsrfCookieName: 'XSRF-TOKEN',\n\t xsrfHeaderName: 'X-XSRF-TOKEN',\n\t\n\t maxContentLength: -1,\n\t\n\t validateStatus: function validateStatus(status) {\n\t return status >= 200 && status < 300;\n\t }\n\t};\n\t\n\tdefaults.headers = {\n\t common: {\n\t 'Accept': 'application/json, text/plain, */*'\n\t }\n\t};\n\t\n\tutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n\t defaults.headers[method] = {};\n\t});\n\t\n\tutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n\t defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n\t});\n\t\n\tmodule.exports = defaults;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\t\n\tmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n\t utils.forEach(headers, function processHeader(value, name) {\n\t if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n\t headers[normalizedName] = value;\n\t delete headers[name];\n\t }\n\t });\n\t};\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\tvar settle = __webpack_require__(13);\n\tvar buildURL = __webpack_require__(5);\n\tvar buildFullPath = __webpack_require__(16);\n\tvar parseHeaders = __webpack_require__(19);\n\tvar isURLSameOrigin = __webpack_require__(20);\n\tvar createError = __webpack_require__(14);\n\t\n\tmodule.exports = function xhrAdapter(config) {\n\t return new Promise(function dispatchXhrRequest(resolve, reject) {\n\t var requestData = config.data;\n\t var requestHeaders = config.headers;\n\t\n\t if (utils.isFormData(requestData)) {\n\t delete requestHeaders['Content-Type']; // Let the browser set it\n\t }\n\t\n\t var request = new XMLHttpRequest();\n\t\n\t // HTTP basic authentication\n\t if (config.auth) {\n\t var username = config.auth.username || '';\n\t var password = config.auth.password || '';\n\t requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n\t }\n\t\n\t var fullPath = buildFullPath(config.baseURL, config.url);\n\t request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\t\n\t // Set the request timeout in MS\n\t request.timeout = config.timeout;\n\t\n\t // Listen for ready state\n\t request.onreadystatechange = function handleLoad() {\n\t if (!request || request.readyState !== 4) {\n\t return;\n\t }\n\t\n\t // The request errored out and we didn't get a response, this will be\n\t // handled by onerror instead\n\t // With one exception: request that using file: protocol, most browsers\n\t // will return status as 0 even though it's a successful request\n\t if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n\t return;\n\t }\n\t\n\t // Prepare the response\n\t var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n\t var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n\t var response = {\n\t data: responseData,\n\t status: request.status,\n\t statusText: request.statusText,\n\t headers: responseHeaders,\n\t config: config,\n\t request: request\n\t };\n\t\n\t settle(resolve, reject, response);\n\t\n\t // Clean up request\n\t request = null;\n\t };\n\t\n\t // Handle browser request cancellation (as opposed to a manual cancellation)\n\t request.onabort = function handleAbort() {\n\t if (!request) {\n\t return;\n\t }\n\t\n\t reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\t\n\t // Clean up request\n\t request = null;\n\t };\n\t\n\t // Handle low level network errors\n\t request.onerror = function handleError() {\n\t // Real errors are hidden from us by the browser\n\t // onerror should only fire if it's a network error\n\t reject(createError('Network Error', config, null, request));\n\t\n\t // Clean up request\n\t request = null;\n\t };\n\t\n\t // Handle timeout\n\t request.ontimeout = function handleTimeout() {\n\t var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n\t if (config.timeoutErrorMessage) {\n\t timeoutErrorMessage = config.timeoutErrorMessage;\n\t }\n\t reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n\t request));\n\t\n\t // Clean up request\n\t request = null;\n\t };\n\t\n\t // Add xsrf header\n\t // This is only done if running in a standard browser environment.\n\t // Specifically not if we're in a web worker, or react-native.\n\t if (utils.isStandardBrowserEnv()) {\n\t var cookies = __webpack_require__(21);\n\t\n\t // Add xsrf header\n\t var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n\t cookies.read(config.xsrfCookieName) :\n\t undefined;\n\t\n\t if (xsrfValue) {\n\t requestHeaders[config.xsrfHeaderName] = xsrfValue;\n\t }\n\t }\n\t\n\t // Add headers to the request\n\t if ('setRequestHeader' in request) {\n\t utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n\t if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n\t // Remove Content-Type if data is undefined\n\t delete requestHeaders[key];\n\t } else {\n\t // Otherwise add header to the request\n\t request.setRequestHeader(key, val);\n\t }\n\t });\n\t }\n\t\n\t // Add withCredentials to request if needed\n\t if (!utils.isUndefined(config.withCredentials)) {\n\t request.withCredentials = !!config.withCredentials;\n\t }\n\t\n\t // Add responseType to request if needed\n\t if (config.responseType) {\n\t try {\n\t request.responseType = config.responseType;\n\t } catch (e) {\n\t // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n\t // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n\t if (config.responseType !== 'json') {\n\t throw e;\n\t }\n\t }\n\t }\n\t\n\t // Handle progress if needed\n\t if (typeof config.onDownloadProgress === 'function') {\n\t request.addEventListener('progress', config.onDownloadProgress);\n\t }\n\t\n\t // Not all browsers support upload events\n\t if (typeof config.onUploadProgress === 'function' && request.upload) {\n\t request.upload.addEventListener('progress', config.onUploadProgress);\n\t }\n\t\n\t if (config.cancelToken) {\n\t // Handle cancellation\n\t config.cancelToken.promise.then(function onCanceled(cancel) {\n\t if (!request) {\n\t return;\n\t }\n\t\n\t request.abort();\n\t reject(cancel);\n\t // Clean up request\n\t request = null;\n\t });\n\t }\n\t\n\t if (requestData === undefined) {\n\t requestData = null;\n\t }\n\t\n\t // Send the request\n\t request.send(requestData);\n\t });\n\t};\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar createError = __webpack_require__(14);\n\t\n\t/**\n\t * Resolve or reject a Promise based on response status.\n\t *\n\t * @param {Function} resolve A function that resolves the promise.\n\t * @param {Function} reject A function that rejects the promise.\n\t * @param {object} response The response.\n\t */\n\tmodule.exports = function settle(resolve, reject, response) {\n\t var validateStatus = response.config.validateStatus;\n\t if (!validateStatus || validateStatus(response.status)) {\n\t resolve(response);\n\t } else {\n\t reject(createError(\n\t 'Request failed with status code ' + response.status,\n\t response.config,\n\t null,\n\t response.request,\n\t response\n\t ));\n\t }\n\t};\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar enhanceError = __webpack_require__(15);\n\t\n\t/**\n\t * Create an Error with the specified message, config, error code, request and response.\n\t *\n\t * @param {string} message The error message.\n\t * @param {Object} config The config.\n\t * @param {string} [code] The error code (for example, 'ECONNABORTED').\n\t * @param {Object} [request] The request.\n\t * @param {Object} [response] The response.\n\t * @returns {Error} The created error.\n\t */\n\tmodule.exports = function createError(message, config, code, request, response) {\n\t var error = new Error(message);\n\t return enhanceError(error, config, code, request, response);\n\t};\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\t/**\n\t * Update an Error with the specified config, error code, and response.\n\t *\n\t * @param {Error} error The error to update.\n\t * @param {Object} config The config.\n\t * @param {string} [code] The error code (for example, 'ECONNABORTED').\n\t * @param {Object} [request] The request.\n\t * @param {Object} [response] The response.\n\t * @returns {Error} The error.\n\t */\n\tmodule.exports = function enhanceError(error, config, code, request, response) {\n\t error.config = config;\n\t if (code) {\n\t error.code = code;\n\t }\n\t\n\t error.request = request;\n\t error.response = response;\n\t error.isAxiosError = true;\n\t\n\t error.toJSON = function() {\n\t return {\n\t // Standard\n\t message: this.message,\n\t name: this.name,\n\t // Microsoft\n\t description: this.description,\n\t number: this.number,\n\t // Mozilla\n\t fileName: this.fileName,\n\t lineNumber: this.lineNumber,\n\t columnNumber: this.columnNumber,\n\t stack: this.stack,\n\t // Axios\n\t config: this.config,\n\t code: this.code\n\t };\n\t };\n\t return error;\n\t};\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar isAbsoluteURL = __webpack_require__(17);\n\tvar combineURLs = __webpack_require__(18);\n\t\n\t/**\n\t * Creates a new URL by combining the baseURL with the requestedURL,\n\t * only when the requestedURL is not already an absolute URL.\n\t * If the requestURL is absolute, this function returns the requestedURL untouched.\n\t *\n\t * @param {string} baseURL The base URL\n\t * @param {string} requestedURL Absolute or relative URL to combine\n\t * @returns {string} The combined full path\n\t */\n\tmodule.exports = function buildFullPath(baseURL, requestedURL) {\n\t if (baseURL && !isAbsoluteURL(requestedURL)) {\n\t return combineURLs(baseURL, requestedURL);\n\t }\n\t return requestedURL;\n\t};\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\t/**\n\t * Determines whether the specified URL is absolute\n\t *\n\t * @param {string} url The URL to test\n\t * @returns {boolean} True if the specified URL is absolute, otherwise false\n\t */\n\tmodule.exports = function isAbsoluteURL(url) {\n\t // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n\t // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n\t // by any combination of letters, digits, plus, period, or hyphen.\n\t return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n\t};\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\t/**\n\t * Creates a new URL by combining the specified URLs\n\t *\n\t * @param {string} baseURL The base URL\n\t * @param {string} relativeURL The relative URL\n\t * @returns {string} The combined URL\n\t */\n\tmodule.exports = function combineURLs(baseURL, relativeURL) {\n\t return relativeURL\n\t ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n\t : baseURL;\n\t};\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\t\n\t// Headers whose duplicates are ignored by node\n\t// c.f. https://nodejs.org/api/http.html#http_message_headers\n\tvar ignoreDuplicateOf = [\n\t 'age', 'authorization', 'content-length', 'content-type', 'etag',\n\t 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n\t 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n\t 'referer', 'retry-after', 'user-agent'\n\t];\n\t\n\t/**\n\t * Parse headers into an object\n\t *\n\t * ```\n\t * Date: Wed, 27 Aug 2014 08:58:49 GMT\n\t * Content-Type: application/json\n\t * Connection: keep-alive\n\t * Transfer-Encoding: chunked\n\t * ```\n\t *\n\t * @param {String} headers Headers needing to be parsed\n\t * @returns {Object} Headers parsed into an object\n\t */\n\tmodule.exports = function parseHeaders(headers) {\n\t var parsed = {};\n\t var key;\n\t var val;\n\t var i;\n\t\n\t if (!headers) { return parsed; }\n\t\n\t utils.forEach(headers.split('\\n'), function parser(line) {\n\t i = line.indexOf(':');\n\t key = utils.trim(line.substr(0, i)).toLowerCase();\n\t val = utils.trim(line.substr(i + 1));\n\t\n\t if (key) {\n\t if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n\t return;\n\t }\n\t if (key === 'set-cookie') {\n\t parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n\t } else {\n\t parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n\t }\n\t }\n\t });\n\t\n\t return parsed;\n\t};\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\t\n\tmodule.exports = (\n\t utils.isStandardBrowserEnv() ?\n\t\n\t // Standard browser envs have full support of the APIs needed to test\n\t // whether the request URL is of the same origin as current location.\n\t (function standardBrowserEnv() {\n\t var msie = /(msie|trident)/i.test(navigator.userAgent);\n\t var urlParsingNode = document.createElement('a');\n\t var originURL;\n\t\n\t /**\n\t * Parse a URL to discover it's components\n\t *\n\t * @param {String} url The URL to be parsed\n\t * @returns {Object}\n\t */\n\t function resolveURL(url) {\n\t var href = url;\n\t\n\t if (msie) {\n\t // IE needs attribute set twice to normalize properties\n\t urlParsingNode.setAttribute('href', href);\n\t href = urlParsingNode.href;\n\t }\n\t\n\t urlParsingNode.setAttribute('href', href);\n\t\n\t // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n\t return {\n\t href: urlParsingNode.href,\n\t protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n\t host: urlParsingNode.host,\n\t search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n\t hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n\t hostname: urlParsingNode.hostname,\n\t port: urlParsingNode.port,\n\t pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n\t urlParsingNode.pathname :\n\t '/' + urlParsingNode.pathname\n\t };\n\t }\n\t\n\t originURL = resolveURL(window.location.href);\n\t\n\t /**\n\t * Determine if a URL shares the same origin as the current location\n\t *\n\t * @param {String} requestURL The URL to test\n\t * @returns {boolean} True if URL shares the same origin, otherwise false\n\t */\n\t return function isURLSameOrigin(requestURL) {\n\t var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n\t return (parsed.protocol === originURL.protocol &&\n\t parsed.host === originURL.host);\n\t };\n\t })() :\n\t\n\t // Non standard browser envs (web workers, react-native) lack needed support.\n\t (function nonStandardBrowserEnv() {\n\t return function isURLSameOrigin() {\n\t return true;\n\t };\n\t })()\n\t);\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\t\n\tmodule.exports = (\n\t utils.isStandardBrowserEnv() ?\n\t\n\t // Standard browser envs support document.cookie\n\t (function standardBrowserEnv() {\n\t return {\n\t write: function write(name, value, expires, path, domain, secure) {\n\t var cookie = [];\n\t cookie.push(name + '=' + encodeURIComponent(value));\n\t\n\t if (utils.isNumber(expires)) {\n\t cookie.push('expires=' + new Date(expires).toGMTString());\n\t }\n\t\n\t if (utils.isString(path)) {\n\t cookie.push('path=' + path);\n\t }\n\t\n\t if (utils.isString(domain)) {\n\t cookie.push('domain=' + domain);\n\t }\n\t\n\t if (secure === true) {\n\t cookie.push('secure');\n\t }\n\t\n\t document.cookie = cookie.join('; ');\n\t },\n\t\n\t read: function read(name) {\n\t var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n\t return (match ? decodeURIComponent(match[3]) : null);\n\t },\n\t\n\t remove: function remove(name) {\n\t this.write(name, '', Date.now() - 86400000);\n\t }\n\t };\n\t })() :\n\t\n\t // Non standard browser env (web workers, react-native) lack needed support.\n\t (function nonStandardBrowserEnv() {\n\t return {\n\t write: function write() {},\n\t read: function read() { return null; },\n\t remove: function remove() {}\n\t };\n\t })()\n\t);\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar utils = __webpack_require__(2);\n\t\n\t/**\n\t * Config-specific merge-function which creates a new config-object\n\t * by merging two configuration objects together.\n\t *\n\t * @param {Object} config1\n\t * @param {Object} config2\n\t * @returns {Object} New object resulting from merging config2 to config1\n\t */\n\tmodule.exports = function mergeConfig(config1, config2) {\n\t // eslint-disable-next-line no-param-reassign\n\t config2 = config2 || {};\n\t var config = {};\n\t\n\t var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];\n\t var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n\t var defaultToConfig2Keys = [\n\t 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',\n\t 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n\t 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',\n\t 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',\n\t 'httpsAgent', 'cancelToken', 'socketPath'\n\t ];\n\t\n\t utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n\t if (typeof config2[prop] !== 'undefined') {\n\t config[prop] = config2[prop];\n\t }\n\t });\n\t\n\t utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n\t if (utils.isObject(config2[prop])) {\n\t config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n\t } else if (typeof config2[prop] !== 'undefined') {\n\t config[prop] = config2[prop];\n\t } else if (utils.isObject(config1[prop])) {\n\t config[prop] = utils.deepMerge(config1[prop]);\n\t } else if (typeof config1[prop] !== 'undefined') {\n\t config[prop] = config1[prop];\n\t }\n\t });\n\t\n\t utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n\t if (typeof config2[prop] !== 'undefined') {\n\t config[prop] = config2[prop];\n\t } else if (typeof config1[prop] !== 'undefined') {\n\t config[prop] = config1[prop];\n\t }\n\t });\n\t\n\t var axiosKeys = valueFromConfig2Keys\n\t .concat(mergeDeepPropertiesKeys)\n\t .concat(defaultToConfig2Keys);\n\t\n\t var otherKeys = Object\n\t .keys(config2)\n\t .filter(function filterAxiosKeys(key) {\n\t return axiosKeys.indexOf(key) === -1;\n\t });\n\t\n\t utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n\t if (typeof config2[prop] !== 'undefined') {\n\t config[prop] = config2[prop];\n\t } else if (typeof config1[prop] !== 'undefined') {\n\t config[prop] = config1[prop];\n\t }\n\t });\n\t\n\t return config;\n\t};\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\t/**\n\t * A `Cancel` is an object that is thrown when an operation is canceled.\n\t *\n\t * @class\n\t * @param {string=} message The message.\n\t */\n\tfunction Cancel(message) {\n\t this.message = message;\n\t}\n\t\n\tCancel.prototype.toString = function toString() {\n\t return 'Cancel' + (this.message ? ': ' + this.message : '');\n\t};\n\t\n\tCancel.prototype.__CANCEL__ = true;\n\t\n\tmodule.exports = Cancel;\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar Cancel = __webpack_require__(23);\n\t\n\t/**\n\t * A `CancelToken` is an object that can be used to request cancellation of an operation.\n\t *\n\t * @class\n\t * @param {Function} executor The executor function.\n\t */\n\tfunction CancelToken(executor) {\n\t if (typeof executor !== 'function') {\n\t throw new TypeError('executor must be a function.');\n\t }\n\t\n\t var resolvePromise;\n\t this.promise = new Promise(function promiseExecutor(resolve) {\n\t resolvePromise = resolve;\n\t });\n\t\n\t var token = this;\n\t executor(function cancel(message) {\n\t if (token.reason) {\n\t // Cancellation has already been requested\n\t return;\n\t }\n\t\n\t token.reason = new Cancel(message);\n\t resolvePromise(token.reason);\n\t });\n\t}\n\t\n\t/**\n\t * Throws a `Cancel` if cancellation has been requested.\n\t */\n\tCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n\t if (this.reason) {\n\t throw this.reason;\n\t }\n\t};\n\t\n\t/**\n\t * Returns an object that contains a new `CancelToken` and a function that, when called,\n\t * cancels the `CancelToken`.\n\t */\n\tCancelToken.source = function source() {\n\t var cancel;\n\t var token = new CancelToken(function executor(c) {\n\t cancel = c;\n\t });\n\t return {\n\t token: token,\n\t cancel: cancel\n\t };\n\t};\n\t\n\tmodule.exports = CancelToken;\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\t/**\n\t * Syntactic sugar for invoking a function and expanding an array for arguments.\n\t *\n\t * Common use case would be to use `Function.prototype.apply`.\n\t *\n\t * ```js\n\t * function f(x, y, z) {}\n\t * var args = [1, 2, 3];\n\t * f.apply(null, args);\n\t * ```\n\t *\n\t * With `spread` this example can be re-written.\n\t *\n\t * ```js\n\t * spread(function(x, y, z) {})([1, 2, 3]);\n\t * ```\n\t *\n\t * @param {Function} callback\n\t * @returns {Function}\n\t */\n\tmodule.exports = function spread(callback) {\n\t return function wrap(arr) {\n\t return callback.apply(null, arr);\n\t };\n\t};\n\n\n/***/ })\n/******/ ])\n});\n;\n//# sourceMappingURL=axios.map","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n var defaultToConfig2Keys = [\n 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',\n 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath'\n ];\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys);\n\n var otherKeys = Object\n .keys(config2)\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('some');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\n\nvar wrap = function (scheduler) {\n return function (handler, timeout /* , ...arguments */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof handler == 'function' ? handler : Function(handler)).apply(this, args);\n } : handler, timeout);\n };\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n$({ global: true, bind: true, forced: MSIE }, {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n});\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import assign from '../assign/index.js';\nexport default function cloneObject(dirtyObject) {\n return assign({}, dirtyObject);\n}","import lightFormatters from '../lightFormatters/index.js';\nimport 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';\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 * | | 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\n};\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\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\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\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 (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\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 (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\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 (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\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 (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\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\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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 (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\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\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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 (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\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 (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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 (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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 (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\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\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\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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 (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\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\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\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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 (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\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\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\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\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\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\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 (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\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\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\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\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (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 (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\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\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\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\n return formatTimezone(offset, dirtyDelimiter);\n}\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}\n\nexport default formatters;","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 */\n\nvar formatters = {\n // Year\n y: function (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 var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (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 (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (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;","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var MILLISECONDS_IN_MINUTE = 60000;\n\nfunction getDateMillisecondsPart(date) {\n return date.getTime() % MILLISECONDS_IN_MINUTE;\n}\n/**\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 */\n\n\nexport default function getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());\n date.setSeconds(0, 0);\n var hasNegativeUTCOffset = baseTimezoneOffset > 0;\n var millisecondsPartOfTimezoneOffset = hasNegativeUTCOffset ? (MILLISECONDS_IN_MINUTE + getDateMillisecondsPart(date)) % MILLISECONDS_IN_MINUTE : getDateMillisecondsPart(date);\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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 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; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // 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\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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\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; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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(); // 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\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\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, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\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) {\n if (token === 'YYYY') {\n throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'YY') {\n throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'D') {\n throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');\n } else if (token === 'DD') {\n throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');\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}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\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 toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\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'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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 getUTCISOWeekYear from '../getUTCISOWeekYear/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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 toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\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}","import toInteger from '../toInteger/index.js';\nimport getUTCWeekYear from '../getUTCWeekYear/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import 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 * var 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 */\n\nexport default function add(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || typeof duration !== 'object') return new Date(NaN);\n var years = 'years' in duration ? toInteger(duration.years) : 0;\n var months = 'months' in duration ? toInteger(duration.months) : 0;\n var weeks = 'weeks' in duration ? toInteger(duration.weeks) : 0;\n var days = 'days' in duration ? toInteger(duration.days) : 0;\n var hours = 'hours' in duration ? toInteger(duration.hours) : 0;\n var minutes = 'minutes' in duration ? toInteger(duration.minutes) : 0;\n var seconds = 'seconds' in duration ? toInteger(duration.seconds) : 0; // Add years and months\n\n var date = toDate(dirtyDate);\n var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date; // Add weeks and days\n\n var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths; // Add days, hours, minutes and seconds\n\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';\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 * var result = addBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Sep 15 2014 00:00:00 (skipped weekend days)\n */\n\nexport default function addBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\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); // Get remaining days not part of a full week\n\n var restDays = Math.abs(amount % 5); // Loops over remaining days\n\n while (restDays > 0) {\n date.setDate(date.getDate() + sign);\n if (!isWeekend(date)) restDays -= 1;\n } // Restore hours to avoid DST lag\n\n\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\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\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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `addISOYears` to `addISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\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 * var result = addISOWeekYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\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\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 1, 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\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `areRangesOverlapping` to `areIntervalsOverlapping`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\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 * ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/types/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/types/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 */\n\nexport default function areIntervalsOverlapping(dirtyIntervalLeft, dirtyIntervalRight) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\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(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n\n if (options.inclusive) {\n return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;\n }\n\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime;\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestIndexTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date|Number} dateToCompare - the date to compare with\n * @param {Date[]|Number[]} datesArray - the array to search\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\n\nexport default function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n\n if (isNaN(dateToCompare)) {\n return NaN;\n }\n\n var timeToCompare = dateToCompare.getTime();\n var datesArray; // `dirtyDatesArray` is undefined or null\n\n if (dirtyDatesArray == null) {\n datesArray = []; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // 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\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate, index) {\n var currentDate = toDate(dirtyDate);\n\n if (isNaN(currentDate)) {\n result = NaN;\n minDistance = NaN;\n return;\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n if (result == null || distance < 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date|Number} dateToCompare - the date to compare with\n * @param {Date[]|Number[]} datesArray - the array to search\n * @returns {Date} the date from the array closest to the given date\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 * var dateToCompare = new Date(2015, 8, 6)\n * var 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 */\n\nexport default function closestTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n\n if (isNaN(dateToCompare)) {\n return new Date(NaN);\n }\n\n var timeToCompare = dateToCompare.getTime();\n var datesArray; // `dirtyDatesArray` is undefined or null\n\n if (dirtyDatesArray == null) {\n datesArray = []; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // 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\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (isNaN(currentDate)) {\n result = new Date(NaN);\n minDistance = NaN;\n return;\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n if (result == null || distance < 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var 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 */\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\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var 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 */\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\n if (diff > 0) {\n return -1;\n } else if (diff < 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","/**\n * Maximum allowed time.\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Minimum allowed time.\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;","import isValid from '../isValid/index.js';\nimport isWeekend from '../isWeekend/index.js';\nimport toDate from '../toDate/index.js';\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js';\nimport addDays from '../addDays/index.js';\nimport isSameDay from '../isSameDay/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/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 * var result = differenceInBusinessDays(\n * new Date(2014, 6, 20),\n * new Date(2014, 0, 10)\n * )\n * //=> 136\n */\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 new Date(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); // the loop below will run at most 6 times to account for the remaining days that don't makeup a full week\n\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\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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\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); // 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\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInCalendarISOYears` to `differenceInCalendarISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\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 * var result = differenceInCalendarISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\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); // 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\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions);\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions);\n var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight); // 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\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\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.\n\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\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var 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 * var result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\n\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); // 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\n var isLastDayNotFull = compareLocalAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - isLastDayNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import differenceInMilliseconds from '../differenceInMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\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 * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\n\nexport default function differenceInHours(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_HOUR;\n return diff > 0 ? Math.floor(diff) : Math.ceil(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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInISOYears` to `differenceInISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\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 * var result = differenceInISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\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); // 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\n var isLastISOWeekYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - isLastISOWeekYearNotFull); // Prevent negative zero\n\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 */\n\nexport default function differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getTime() - dateRight.getTime();\n}","import differenceInMilliseconds from '../differenceInMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_MINUTE = 60000;\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\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 * var 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 from 10:01:59 to 10:00:00\n * var result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\n\nexport default function differenceInMinutes(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_MINUTE;\n return diff > 0 ? Math.floor(diff) : Math.ceil(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';\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.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\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 dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // 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\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - isLastMonthNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import differenceInMonths from '../differenceInMonths/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\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 * var result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\n\nexport default function differenceInQuarters(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight) / 3;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","import differenceInMilliseconds from '../differenceInMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\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 * var 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 */\n\nexport default function differenceInSeconds(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","import differenceInDays from '../differenceInDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/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.\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\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 * var 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 * var result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\n\nexport default function differenceInWeeks(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight) / 7;\n return diff > 0 ? Math.floor(diff) : Math.ceil(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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\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)); // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n\n dateLeft.setFullYear('1584');\n dateRight.setFullYear('1584'); // 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\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - isLastYearNotFull); // Prevent negative zero\n\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `eachDay` to `eachDayOfInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * eachDay(new Date(2014, 0, 10), new Date(2014, 0, 20))\n *\n * // v2.0.0 onward\n *\n * eachDayOfInterval(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }\n * )\n * ```\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/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 * var 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 */\n\nexport default function eachDayOfInterval(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(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n var step = options && 'step' in options ? Number(options.step) : 1;\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n\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\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 docs/types/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 10 October 2014, 15:00\n * var 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 */\n\nexport default function eachHourOfInterval(dirtyInterval, options) {\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(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setMinutes(0, 0, 0);\n var step = options && 'step' in options ? Number(options.step) : 1;\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate = addHours(currentDate, step);\n }\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 docs/types/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 * var 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 */\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(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setDate(1);\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setMonth(currentDate.getMonth() + 1);\n }\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 docs/types/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 * var 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 */\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(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var startDateQuarter = startOfQuarter(startDate);\n var endDateQuarter = startOfQuarter(endDate);\n endTime = endDateQuarter.getTime();\n var quarters = [];\n var currentQuarter = startDateQuarter;\n\n while (currentQuarter.getTime() <= endTime) {\n quarters.push(toDate(currentQuarter));\n currentQuarter = addQuarters(currentQuarter, 1);\n }\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/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 * var 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 */\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(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var startDateWeek = startOfWeek(startDate, options);\n var endDateWeek = startOfWeek(endDate, options); // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n\n startDateWeek.setHours(15);\n endDateWeek.setHours(15);\n endTime = endDateWeek.getTime();\n var weeks = [];\n var currentWeek = startDateWeek;\n\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\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 docs/types/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 * var 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 */\n\nexport default function eachWeekendOfInterval(interval) {\n requiredArgs(1, arguments);\n var dateInterval = eachDayOfInterval(interval);\n var weekends = [];\n var index = 0;\n\n while (index < dateInterval.length) {\n var date = dateInterval[index++];\n\n if (isWeekend(date)) {\n weekends.push(date);\n if (isSunday(date)) index = index + 5;\n }\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 * var 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 */\n\nexport default function eachWeekendOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfMonth(dirtyDate);\n if (isNaN(startDate)) 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 startOfYear from '../startOfYear/index.js';\nimport endOfYear from '../endOfYear/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 * var 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 */\n\nexport default function eachWeekendOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfYear(dirtyDate);\n if (isNaN(startDate)) throw new RangeError('The passed date is invalid');\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 docs/types/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 * var 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 */\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(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setMonth(0, 1);\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setFullYear(currentDate.getFullYear() + 1);\n }\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `endOfISOYear` to `endOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\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 * var result = endOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var 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 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\n\nexport default function endOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the end of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var 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 isValid from '../isValid/index.js';\nimport defaultLocale from '../locale/en-US/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'; // 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\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\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://git.io/fxCyr\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, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\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, ..., Su | 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, Su, Sa | 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, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\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, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 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 | 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, 0001, ..., 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 | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 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 | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 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://git.io/fxCyr\n *\n * 9. `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://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\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://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\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; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var 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 * var 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 * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\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\n\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\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\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\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import compareAsc from '../compareAsc/index.js';\nimport differenceInMonths from '../differenceInMonths/index.js';\nimport differenceInSeconds from '../differenceInSeconds/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport toDate from '../toDate/index.js';\nimport cloneObject from '../_lib/cloneObject/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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWords ` to `formatDistance`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWords(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 11, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n *\n * // v2.0.0 onward\n *\n * formatDistance(\n * new Date(1986, 3, 4, 11, 32, 0),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n * ```\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 * var 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 * var 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 * var 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 * var 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, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\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; // 0 up to 2 mins\n\n if (minutes < 2) {\n if (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', null, 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 } // 2 mins up to 0.75 hrs\n\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions); // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions); // 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); // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions); // 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); // 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\n months = differenceInMonths(dateRight, dateLeft); // 2 months up to 12 months\n\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions); // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12); // N years up to 1 years 3 months\n\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions); // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions); // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport compareAsc from '../compareAsc/index.js';\nimport toDate from '../toDate/index.js';\nimport differenceInSeconds from '../differenceInSeconds/index.js';\nimport cloneObject from '../_lib/cloneObject/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_YEAR = 525600;\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsStrict` to `formatDistanceStrict`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(2015, 0, 2),\n * new Date(2014, 6, 2)\n * ) //=> '6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * ) //=> '6 months'\n * ```\n *\n * - `partialMethod` option is renamed to `roundingMethod`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { partialMethod: 'ceil' }\n * ) //=> '2 minutes'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { roundingMethod: 'ceil' }\n * ) //=> '2 minutes'\n * ```\n *\n * - If `roundingMethod` is not specified, it now defaults to `round` instead of `floor`.\n *\n * - `unit` option now accepts one of the strings:\n * 'second', 'minute', 'hour', 'day', 'month' or 'year' instead of 's', 'm', 'h', 'd', 'M' or 'Y'\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { unit: 'm' }\n * )\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { unit: 'minute' }\n * )\n * ```\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 * var 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 * var 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 * var 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 * var 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 * var 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 * var 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, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var roundingMethod = options.roundingMethod == null ? 'round' : String(options.roundingMethod);\n var roundingMethodFn;\n\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\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = roundingMethodFn((seconds - offsetInSeconds) / 60);\n var unit;\n\n if (options.unit == null) {\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 (minutes < MINUTES_IN_MONTH) {\n unit = 'day';\n } else if (minutes < MINUTES_IN_YEAR) {\n unit = 'month';\n } else {\n unit = 'year';\n }\n } else {\n unit = String(options.unit);\n } // 0 up to 60 seconds\n\n\n if (unit === 'second') {\n return locale.formatDistance('xSeconds', seconds, localizeOptions); // 1 up to 60 mins\n } else if (unit === 'minute') {\n return locale.formatDistance('xMinutes', minutes, localizeOptions); // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60);\n return locale.formatDistance('xHours', hours, localizeOptions); // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', months, localizeOptions); // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(minutes / MINUTES_IN_YEAR);\n return locale.formatDistance('xYears', years, localizeOptions);\n }\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsToNow ` to `formatDistanceToNow`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n * ```\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 * var 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 * var 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 * var 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 * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistanceToNow(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), dirtyOptions);\n}","import distanceInStrictWords 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 * var 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 * var result = formatDistanceToNowStrict(\n * new Date(2015, 0, 1, 0, 0, 15)\n * )\n * //=> '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 * var 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 * var 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 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNowStrict(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceToNowStrict(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return distanceInStrictWords(dirtyDate, Date.now(), dirtyOptions);\n}","import defaultLocale from '../locale/en-US/index.js';\nvar defaultFormat = ['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds'];\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\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 be zeros be included in the output?\n * @param {string} [options.delimiter=' '] - delimiter string\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 }, null, { 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 */\n\nexport default function formatDuration(duration) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n\n var format = options.format || defaultFormat;\n var locale = options.locale || defaultLocale;\n var zero = options.zero || false;\n var delimiter = options.delimiter || ' ';\n var result = format.reduce(function (acc, unit) {\n var token = \"x\".concat(unit.replace(/(^.)/, function (m) {\n return m.toUpperCase();\n }));\n var addChunk = typeof duration[unit] === 'number' && (zero || duration[unit]);\n return addChunk ? acc.concat(locale.formatDistance(token, duration[unit])) : acc;\n }, []).join(delimiter);\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 formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (http://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 time zone, 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.represenation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (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 (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 (UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\n\nexport default function formatISO(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var options = dirtyOptions || {};\n var format = options.format == null ? 'extended' : String(options.format);\n var representation = options.representation == null ? 'complete' : String(options.representation);\n\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n\n var result = '';\n var tzOffset = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : ''; // Representation is either 'date' or 'complete'\n\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); // yyyyMMdd or yyyy-MM-dd.\n\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n } // Representation is either 'time' or 'complete'\n\n\n if (representation !== 'date') {\n // Add the timezone.\n var offset = originalDate.getTimezoneOffset();\n\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); // If less than 0, the sign is +, because it is ahead of time.\n\n var sign = offset < 0 ? '+' : '-';\n tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n tzOffset = 'Z';\n }\n\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2); // If there's also date, separate it with time with 'T'\n\n var separator = result === '' ? '' : 'T'; // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n\n var time = [hour, minute, second].join(timeDelimiter); // HHmmss or HH:mm:ss.\n\n result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n }\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.represenation` 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 */\n\nexport default function formatISO9075(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var options = dirtyOptions || {};\n var format = options.format == null ? 'extended' : String(options.format);\n var representation = options.representation == null ? 'complete' : String(options.representation);\n\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n\n var result = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : ''; // Representation is either 'date' or 'complete'\n\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); // yyyyMMdd or yyyy-MM-dd.\n\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n } // Representation is either 'time' or 'complete'\n\n\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); // If there's also date, separate it with time with a space\n\n var separator = result === '' ? '' : ' '; // HHmmss or HH:mm:ss.\n\n result = \"\".concat(result).concat(separator).concat(hour).concat(timeDelimiter).concat(minute).concat(timeDelimiter).concat(second);\n }\n\n return result;\n}","import 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 * formatISODuration({\n * years: 39,\n * months: 2,\n * days: 20,\n * hours: 7,\n * minutes: 5,\n * seconds: 0\n * })\n * //=> 'P39Y2M20DT0H0M0S'\n */\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 ISO 3339 standard (https://tools.ietf.org/html/rfc3339#section-5.6).\n *\n * @description\n * Return the formatted date string in ISO 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 ISO 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 ISO 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 ISO 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 */\n\nexport default function formatRFC3339(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 arguments required, but only \".concat(arguments.length, \" present\"));\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n var options = dirtyOptions || {};\n var fractionDigits = options.fractionDigits == null ? 0 : toInteger(options.fractionDigits); // Test if fractionDigits is between 0 and 3 _and_ is not NaN\n\n if (!(fractionDigits >= 0 && fractionDigits <= 3)) {\n throw new RangeError('fractionDigits must be between 0 and 3 inclusively');\n }\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\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\n var offset = '';\n var tzOffset = originalDate.getTimezoneOffset();\n\n if (tzOffset !== 0) {\n var absoluteOffset = Math.abs(tzOffset);\n var hourOffset = addLeadingZeros(absoluteOffset / 60, 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2); // If less than 0, the sign is +, because it is ahead of time.\n\n var sign = tzOffset < 0 ? '+' : '-';\n offset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n offset = 'Z';\n }\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 * @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 */\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\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\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); // Result variables.\n\n return \"\".concat(dayName, \", \").concat(dayOfMonth, \" \").concat(monthName, \" \").concat(year, \" \").concat(hour, \":\").concat(minute, \":\").concat(second, \" GMT\");\n}","import differenceInCalendarDays from '../differenceInCalendarDays/index.js';\nimport format from '../format/index.js';\nimport defaultLocale from '../locale/en-US/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';\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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\nexport default function formatRelative(dirtyDate, dirtyBaseDate, dirtyOptions) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var baseDate = toDate(dirtyBaseDate);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n if (!locale.formatRelative) {\n throw new RangeError('locale must contain formatRelative property');\n }\n\n var diff = differenceInCalendarDays(date, baseDate);\n\n if (isNaN(diff)) {\n throw new RangeError('Invalid time value');\n }\n\n var token;\n\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\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var utcBaseDate = subMilliseconds(baseDate, getTimezoneOffsetInMilliseconds(baseDate));\n var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, options);\n return format(date, formatStr, options);\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.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Number} unixTime - the given Unix timestamp\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 * var result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\n\nexport default function getDaysInYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n\n if (isNaN(date)) {\n return NaN;\n }\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getDecade(new Date(1942, 10, 27))\n * //=> 1940\n */\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 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\n\nexport default function getISODay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n\n if (day === 0) {\n day = 7;\n }\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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\n\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime(); // 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\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getISOYear` to `getISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\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 * var result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\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\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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\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(); // 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\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getOverlappingDaysInRanges` to `getOverlappingDaysInIntervals`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\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 * ```\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(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n\n var isOverlapping = leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n\n if (!isOverlapping) {\n return 0;\n }\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\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 * @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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getISOWeek(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 * var result = getISOWeek(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(); // 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\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getDate from '../getDate/index.js';\nimport getDay from '../getDay/index.js';\nimport startOfMonth from '../startOfMonth/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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\n *\n * @example\n * // Which week of the month is 9 November 2017?\n * var result = getWeekOfMonth(new Date(2017, 10, 9))\n * //=> 2\n */\n\nexport default function getWeekOfMonth(date, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var currentDayOfMonth = getDate(date);\n\n if (isNaN(currentDayOfMonth)) {\n return currentDayOfMonth;\n }\n\n var startWeekDay = getDay(startOfMonth(date));\n var lastDayOfFirstWeek = 0;\n\n if (startWeekDay >= weekStartsOn) {\n lastDayOfFirstWeek = weekStartsOn + 7 - startWeekDay;\n } else {\n lastDayOfFirstWeek = weekStartsOn - startWeekDay;\n }\n\n var weekNumber = 1;\n\n if (currentDayOfMonth > lastDayOfFirstWeek) {\n var remainingDaysAfterFirstWeek = currentDayOfMonth - lastDayOfFirstWeek;\n weekNumber = weekNumber + Math.ceil(remainingDaysAfterFirstWeek / 7);\n }\n\n return weekNumber;\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';\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var 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 * var result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\n\nexport default function getWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\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, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, dirtyOptions);\n\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })\n * //=> 6\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n return year;\n}","// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.\nexport { default as add } from './add/index.js';\nexport { default as addBusinessDays } from './addBusinessDays/index.js';\nexport { default as addDays } from './addDays/index.js';\nexport { default as addHours } from './addHours/index.js';\nexport { default as addISOWeekYears } from './addISOWeekYears/index.js';\nexport { default as addMilliseconds } from './addMilliseconds/index.js';\nexport { default as addMinutes } from './addMinutes/index.js';\nexport { default as addMonths } from './addMonths/index.js';\nexport { default as addQuarters } from './addQuarters/index.js';\nexport { default as addSeconds } from './addSeconds/index.js';\nexport { default as addWeeks } from './addWeeks/index.js';\nexport { default as addYears } from './addYears/index.js';\nexport { default as areIntervalsOverlapping } from './areIntervalsOverlapping/index.js';\nexport { default as closestIndexTo } from './closestIndexTo/index.js';\nexport { default as closestTo } from './closestTo/index.js';\nexport { default as compareAsc } from './compareAsc/index.js';\nexport { default as compareDesc } from './compareDesc/index.js';\nexport { default as differenceInBusinessDays } from './differenceInBusinessDays/index.js';\nexport { default as differenceInCalendarDays } from './differenceInCalendarDays/index.js';\nexport { default as differenceInCalendarISOWeekYears } from './differenceInCalendarISOWeekYears/index.js';\nexport { default as differenceInCalendarISOWeeks } from './differenceInCalendarISOWeeks/index.js';\nexport { default as differenceInCalendarMonths } from './differenceInCalendarMonths/index.js';\nexport { default as differenceInCalendarQuarters } from './differenceInCalendarQuarters/index.js';\nexport { default as differenceInCalendarWeeks } from './differenceInCalendarWeeks/index.js';\nexport { default as differenceInCalendarYears } from './differenceInCalendarYears/index.js';\nexport { default as differenceInDays } from './differenceInDays/index.js';\nexport { default as differenceInHours } from './differenceInHours/index.js';\nexport { default as differenceInISOWeekYears } from './differenceInISOWeekYears/index.js';\nexport { default as differenceInMilliseconds } from './differenceInMilliseconds/index.js';\nexport { default as differenceInMinutes } from './differenceInMinutes/index.js';\nexport { default as differenceInMonths } from './differenceInMonths/index.js';\nexport { default as differenceInQuarters } from './differenceInQuarters/index.js';\nexport { default as differenceInSeconds } from './differenceInSeconds/index.js';\nexport { default as differenceInWeeks } from './differenceInWeeks/index.js';\nexport { default as differenceInYears } from './differenceInYears/index.js';\nexport { default as eachDayOfInterval } from './eachDayOfInterval/index.js';\nexport { default as eachHourOfInterval } from './eachHourOfInterval/index.js';\nexport { default as eachMonthOfInterval } from './eachMonthOfInterval/index.js';\nexport { default as eachQuarterOfInterval } from './eachQuarterOfInterval/index.js';\nexport { default as eachWeekOfInterval } from './eachWeekOfInterval/index.js';\nexport { default as eachWeekendOfInterval } from './eachWeekendOfInterval/index.js';\nexport { default as eachWeekendOfMonth } from './eachWeekendOfMonth/index.js';\nexport { default as eachWeekendOfYear } from './eachWeekendOfYear/index.js';\nexport { default as eachYearOfInterval } from './eachYearOfInterval/index.js';\nexport { default as endOfDay } from './endOfDay/index.js';\nexport { default as endOfDecade } from './endOfDecade/index.js';\nexport { default as endOfHour } from './endOfHour/index.js';\nexport { default as endOfISOWeek } from './endOfISOWeek/index.js';\nexport { default as endOfISOWeekYear } from './endOfISOWeekYear/index.js';\nexport { default as endOfMinute } from './endOfMinute/index.js';\nexport { default as endOfMonth } from './endOfMonth/index.js';\nexport { default as endOfQuarter } from './endOfQuarter/index.js';\nexport { default as endOfSecond } from './endOfSecond/index.js';\nexport { default as endOfToday } from './endOfToday/index.js';\nexport { default as endOfTomorrow } from './endOfTomorrow/index.js';\nexport { default as endOfWeek } from './endOfWeek/index.js';\nexport { default as endOfYear } from './endOfYear/index.js';\nexport { default as endOfYesterday } from './endOfYesterday/index.js';\nexport { default as format } from './format/index.js';\nexport { default as formatDistance } from './formatDistance/index.js';\nexport { default as formatDistanceStrict } from './formatDistanceStrict/index.js';\nexport { default as formatDistanceToNow } from './formatDistanceToNow/index.js';\nexport { default as formatDistanceToNowStrict } from './formatDistanceToNowStrict/index.js';\nexport { default as formatDuration } from './formatDuration/index.js';\nexport { default as formatISO } from './formatISO/index.js';\nexport { default as formatISO9075 } from './formatISO9075/index.js';\nexport { default as formatISODuration } from './formatISODuration/index.js';\nexport { default as formatRFC3339 } from './formatRFC3339/index.js';\nexport { default as formatRFC7231 } from './formatRFC7231/index.js';\nexport { default as formatRelative } from './formatRelative/index.js';\nexport { default as fromUnixTime } from './fromUnixTime/index.js';\nexport { default as getDate } from './getDate/index.js';\nexport { default as getDay } from './getDay/index.js';\nexport { default as getDayOfYear } from './getDayOfYear/index.js';\nexport { default as getDaysInMonth } from './getDaysInMonth/index.js';\nexport { default as getDaysInYear } from './getDaysInYear/index.js';\nexport { default as getDecade } from './getDecade/index.js';\nexport { default as getHours } from './getHours/index.js';\nexport { default as getISODay } from './getISODay/index.js';\nexport { default as getISOWeek } from './getISOWeek/index.js';\nexport { default as getISOWeekYear } from './getISOWeekYear/index.js';\nexport { default as getISOWeeksInYear } from './getISOWeeksInYear/index.js';\nexport { default as getMilliseconds } from './getMilliseconds/index.js';\nexport { default as getMinutes } from './getMinutes/index.js';\nexport { default as getMonth } from './getMonth/index.js';\nexport { default as getOverlappingDaysInIntervals } from './getOverlappingDaysInIntervals/index.js';\nexport { default as getQuarter } from './getQuarter/index.js';\nexport { default as getSeconds } from './getSeconds/index.js';\nexport { default as getTime } from './getTime/index.js';\nexport { default as getUnixTime } from './getUnixTime/index.js';\nexport { default as getWeek } from './getWeek/index.js';\nexport { default as getWeekOfMonth } from './getWeekOfMonth/index.js';\nexport { default as getWeekYear } from './getWeekYear/index.js';\nexport { default as getWeeksInMonth } from './getWeeksInMonth/index.js';\nexport { default as getYear } from './getYear/index.js';\nexport { default as intervalToDuration } from './intervalToDuration/index.js';\nexport { default as isAfter } from './isAfter/index.js';\nexport { default as isBefore } from './isBefore/index.js';\nexport { default as isDate } from './isDate/index.js';\nexport { default as isEqual } from './isEqual/index.js';\nexport { default as isExists } from './isExists/index.js';\nexport { default as isFirstDayOfMonth } from './isFirstDayOfMonth/index.js';\nexport { default as isFriday } from './isFriday/index.js';\nexport { default as isFuture } from './isFuture/index.js';\nexport { default as isLastDayOfMonth } from './isLastDayOfMonth/index.js';\nexport { default as isLeapYear } from './isLeapYear/index.js';\nexport { default as isMonday } from './isMonday/index.js';\nexport { default as isPast } from './isPast/index.js';\nexport { default as isSameDay } from './isSameDay/index.js';\nexport { default as isSameHour } from './isSameHour/index.js';\nexport { default as isSameISOWeek } from './isSameISOWeek/index.js';\nexport { default as isSameISOWeekYear } from './isSameISOWeekYear/index.js';\nexport { default as isSameMinute } from './isSameMinute/index.js';\nexport { default as isSameMonth } from './isSameMonth/index.js';\nexport { default as isSameQuarter } from './isSameQuarter/index.js';\nexport { default as isSameSecond } from './isSameSecond/index.js';\nexport { default as isSameWeek } from './isSameWeek/index.js';\nexport { default as isSameYear } from './isSameYear/index.js';\nexport { default as isSaturday } from './isSaturday/index.js';\nexport { default as isSunday } from './isSunday/index.js';\nexport { default as isThisHour } from './isThisHour/index.js';\nexport { default as isThisISOWeek } from './isThisISOWeek/index.js';\nexport { default as isThisMinute } from './isThisMinute/index.js';\nexport { default as isThisMonth } from './isThisMonth/index.js';\nexport { default as isThisQuarter } from './isThisQuarter/index.js';\nexport { default as isThisSecond } from './isThisSecond/index.js';\nexport { default as isThisWeek } from './isThisWeek/index.js';\nexport { default as isThisYear } from './isThisYear/index.js';\nexport { default as isThursday } from './isThursday/index.js';\nexport { default as isToday } from './isToday/index.js';\nexport { default as isTomorrow } from './isTomorrow/index.js';\nexport { default as isTuesday } from './isTuesday/index.js';\nexport { default as isValid } from './isValid/index.js';\nexport { default as isWednesday } from './isWednesday/index.js';\nexport { default as isWeekend } from './isWeekend/index.js';\nexport { default as isWithinInterval } from './isWithinInterval/index.js';\nexport { default as isYesterday } from './isYesterday/index.js';\nexport { default as lastDayOfDecade } from './lastDayOfDecade/index.js';\nexport { default as lastDayOfISOWeek } from './lastDayOfISOWeek/index.js';\nexport { default as lastDayOfISOWeekYear } from './lastDayOfISOWeekYear/index.js';\nexport { default as lastDayOfMonth } from './lastDayOfMonth/index.js';\nexport { default as lastDayOfQuarter } from './lastDayOfQuarter/index.js';\nexport { default as lastDayOfWeek } from './lastDayOfWeek/index.js';\nexport { default as lastDayOfYear } from './lastDayOfYear/index.js';\nexport { default as lightFormat } from './lightFormat/index.js';\nexport { default as max } from './max/index.js';\nexport { default as min } from './min/index.js';\nexport { default as parse } from './parse/index.js';\nexport { default as parseISO } from './parseISO/index.js';\nexport { default as parseJSON } from './parseJSON/index.js';\nexport { default as roundToNearestMinutes } from './roundToNearestMinutes/index.js';\nexport { default as set } from './set/index.js';\nexport { default as setDate } from './setDate/index.js';\nexport { default as setDay } from './setDay/index.js';\nexport { default as setDayOfYear } from './setDayOfYear/index.js';\nexport { default as setHours } from './setHours/index.js';\nexport { default as setISODay } from './setISODay/index.js';\nexport { default as setISOWeek } from './setISOWeek/index.js';\nexport { default as setISOWeekYear } from './setISOWeekYear/index.js';\nexport { default as setMilliseconds } from './setMilliseconds/index.js';\nexport { default as setMinutes } from './setMinutes/index.js';\nexport { default as setMonth } from './setMonth/index.js';\nexport { default as setQuarter } from './setQuarter/index.js';\nexport { default as setSeconds } from './setSeconds/index.js';\nexport { default as setWeek } from './setWeek/index.js';\nexport { default as setWeekYear } from './setWeekYear/index.js';\nexport { default as setYear } from './setYear/index.js';\nexport { default as startOfDay } from './startOfDay/index.js';\nexport { default as startOfDecade } from './startOfDecade/index.js';\nexport { default as startOfHour } from './startOfHour/index.js';\nexport { default as startOfISOWeek } from './startOfISOWeek/index.js';\nexport { default as startOfISOWeekYear } from './startOfISOWeekYear/index.js';\nexport { default as startOfMinute } from './startOfMinute/index.js';\nexport { default as startOfMonth } from './startOfMonth/index.js';\nexport { default as startOfQuarter } from './startOfQuarter/index.js';\nexport { default as startOfSecond } from './startOfSecond/index.js';\nexport { default as startOfToday } from './startOfToday/index.js';\nexport { default as startOfTomorrow } from './startOfTomorrow/index.js';\nexport { default as startOfWeek } from './startOfWeek/index.js';\nexport { default as startOfWeekYear } from './startOfWeekYear/index.js';\nexport { default as startOfYear } from './startOfYear/index.js';\nexport { default as startOfYesterday } from './startOfYesterday/index.js';\nexport { default as sub } from './sub/index.js';\nexport { default as subBusinessDays } from './subBusinessDays/index.js';\nexport { default as subDays } from './subDays/index.js';\nexport { default as subHours } from './subHours/index.js';\nexport { default as subISOWeekYears } from './subISOWeekYears/index.js';\nexport { default as subMilliseconds } from './subMilliseconds/index.js';\nexport { default as subMinutes } from './subMinutes/index.js';\nexport { default as subMonths } from './subMonths/index.js';\nexport { default as subQuarters } from './subQuarters/index.js';\nexport { default as subSeconds } from './subSeconds/index.js';\nexport { default as subWeeks } from './subWeeks/index.js';\nexport { default as subYears } from './subYears/index.js';\nexport { default as toDate } from './toDate/index.js';\nexport * from './constants/index.js';","import compareAsc from '../compareAsc/index.js';\nimport differenceInYears from '../differenceInYears/index.js';\nimport differenceInMonths from '../differenceInMonths/index.js';\nimport differenceInDays from '../differenceInDays/index.js';\nimport differenceInHours from '../differenceInHours/index.js';\nimport differenceInMinutes from '../differenceInMinutes/index.js';\nimport differenceInSeconds from '../differenceInSeconds/index.js';\nimport isValid from '../isValid/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nimport toDate from '../toDate/index.js';\nimport sub from '../sub/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 */\n\nexport default function intervalToDuration(_ref) {\n var start = _ref.start,\n end = _ref.end;\n requiredArgs(1, arguments);\n var dateLeft = toDate(start);\n var dateRight = toDate(end);\n\n if (!isValid(dateLeft)) {\n throw new RangeError('Start Date is invalid');\n }\n\n if (!isValid(dateRight)) {\n throw new RangeError('End Date is invalid');\n }\n\n var duration = {\n years: 0,\n months: 0,\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0\n };\n var sign = compareAsc(dateLeft, dateRight);\n duration.years = Math.abs(differenceInYears(dateLeft, dateRight));\n var remainingMonths = sub(dateLeft, {\n years: sign * duration.years\n });\n duration.months = Math.abs(differenceInMonths(remainingMonths, dateRight));\n var remainingDays = sub(remainingMonths, {\n months: sign * duration.months\n });\n duration.days = Math.abs(differenceInDays(remainingDays, dateRight));\n var remainingHours = sub(remainingDays, {\n days: sign * duration.days\n });\n duration.hours = Math.abs(differenceInHours(remainingHours, dateRight));\n var remainingMinutes = sub(remainingHours, {\n hours: sign * duration.hours\n });\n duration.minutes = Math.abs(differenceInMinutes(remainingMinutes, dateRight));\n var remainingSeconds = sub(remainingMinutes, {\n minutes: sign * duration.minutes\n });\n duration.seconds = Math.abs(differenceInSeconds(remainingSeconds, dateRight));\n return duration;\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\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 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * var result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * var result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * var result = isDate({})\n * //=> false\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 */\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 * var result = isExists(2018, 0, 31)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var 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\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isFuture(new Date(2014, 11, 31))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\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 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\n\nexport default function isMonday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isPast(new Date(2014, 6, 2))\n * //=> true\n */\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?\n *\n * @description\n * Are the given dates in the same day?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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\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 * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n */\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?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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\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 * var result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))\n * //=> true\n */\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?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(new Date(2014, 8, 1), new Date(2014, 8, 7))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isSameISOYear` to `isSameISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\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 * var result = isSameISOWeekYear(new Date(2003, 11, 29), new Date(2005, 0, 2))\n * //=> true\n */\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?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\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?\n *\n * @description\n * Are the given dates in the same month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\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 year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n */\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?\n *\n * @description\n * Are the given dates in the same second?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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\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\n * // in the same second?\n * var 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\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?\n *\n * @description\n * Are the given dates in the same week?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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\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 * var 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 * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {\n * weekStartsOn: 1\n * })\n * //=> false\n */\n\nexport default function isSameWeek(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n requiredArgs(2, arguments);\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions);\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions);\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isThisHour(new Date(2014, 8, 25, 18))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isThisISOWeek(new Date(2014, 8, 22))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isThisMinute(new Date(2014, 8, 25, 18, 30))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isThisMonth(new Date(2014, 8, 15))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isThisQuarter(new Date(2014, 6, 2))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isThisSecond(new Date(2014, 8, 25, 18, 30, 15))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isTomorrow(new Date(2014, 9, 7, 14, 0))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\n\nexport default function isTuesday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 2;\n}","import 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\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 * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return !isNaN(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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isWithinRange` to `isWithinInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * isWithinRange(\n * new Date(2014, 0, 3),\n * new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n *\n * // v2.0.0 onward\n *\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * { start: new Date(2014, 0, 1), end: new Date(2014, 0, 7) }\n * )\n * ```\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 */\n\nexport default function isWithinInterval(dirtyDate, dirtyInterval) {\n requiredArgs(2, arguments);\n var interval = dirtyInterval || {};\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime(); // Throw an exception if start date is after end date or if any date is `Invalid Date`\n\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))\n * //=> Wed Dec 31 2019 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `lastDayOfISOYear` to `lastDayOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\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 * var result = lastDayOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\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';\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function lastDayOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6');\n }\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\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\n\nvar formattingTokensRegExp = /(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\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://git.io/fxCyr\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, 0001, ..., 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 * var result = lightFormat(new Date(2014, 1, 11), 'yyyy-MM-dd')\n * //=> '1987-02-11'\n */\n\nexport default function lightFormat(dirtyDate, dirtyFormatStr) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\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\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var result = formatStr.match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n return formatter(utcDate, substring, null, {});\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","export default function buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\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, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\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}\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}","export default function buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\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};\nexport default function formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n}","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};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}","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'] // 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.\n\n};\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};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\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 (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 buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js';\nimport buildMatchFn from '../../../_lib/buildMatchFn/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 (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 (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 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 */\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\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `max` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * var date1 = new Date(1989, 6, 10)\n * var date2 = new Date(1987, 1, 11)\n * var maxDate = max(date1, date2)\n *\n * // v2.0.0 onward:\n * var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * var maxDate = max(dates)\n * ```\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 * var 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 */\n\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // 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\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result < currentDate || isNaN(currentDate)) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name min\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `min` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * var date1 = new Date(1989, 6, 10)\n * var date2 = new Date(1987, 1, 11)\n * var minDate = min(date1, date2)\n *\n * // v2.0.0 onward:\n * var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * var minDate = min(dates)\n * ```\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 * var 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 */\n\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // 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\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result > currentDate || isNaN(currentDate)) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport setUTCDay from '../../../_lib/setUTCDay/index.js';\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js';\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js';\nimport setUTCWeek from '../../../_lib/setUTCWeek/index.js';\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js';\nimport startOfUTCWeek from '../../../_lib/startOfUTCWeek/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar 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 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 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};\nvar 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};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\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 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\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\n return isCommonEra ? result : 1 - result;\n}\n\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]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\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 | | 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 */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\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 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\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\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 incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\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\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 incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\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 incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\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 set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\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\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import defaultLocale from '../locale/en-US/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 parsers from './_lib/parsers/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar TIMEZONE_UNIT_PRIORITY = 10; // 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\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\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://git.io/fxCyr\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, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\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, Su, Sa | 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, Su, Sa | |\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, Su, Sa | |\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, 0001, ..., 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://git.io/fxCyr\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://git.io/fxCyr\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * toDate('2016-01-01')\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\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://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\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; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\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 */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale // If timezone isn't specified, it will be set to the system timezone\n\n };\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\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) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\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 } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\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 }).reverse();\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\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/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\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\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\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}))?$/;\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * parseISO('2016-01-01')\n * ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n * and returns `Invalid Date` if the date is invalid.\n *\n * ```javascript\n * parseISO('2018-13-32')\n * //=> Invalid Date\n * ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n * if it fails to parse a string argument. Instead, 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 * var 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 * var result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (isNaN(date) || !date) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time) || time === null) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // 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\n var result = new Date(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate(), dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n result.setFullYear(dirtyDate.getUTCFullYear());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n if (/:/.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\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\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\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); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: null\n };\n var year = captures[1] && parseInt(captures[1]);\n var century = captures[2] && parseInt(captures[2]);\n return {\n year: century == null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return null;\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return null;\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\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return null; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\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\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE);\n}\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} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\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+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 */\n\nexport default function parseJSON(argument) {\n requiredArgs(1, arguments);\n\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|\\+00:?00)?/);\n\n if (parts) {\n return new Date(Date.UTC(+parts[1], parts[2] - 1, +parts[3], +parts[4], +parts[5], +parts[6], +((parts[7] || '0') + '00').substring(0, 3)));\n }\n\n return new Date(NaN);\n }\n\n return toDate(argument);\n}","import toDate from '../toDate/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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * @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 * var 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 * var 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 */\n\nexport default function roundToNearestMinutes(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only none provided present');\n }\n\n var nearestTo = options && 'nearestTo' in options ? toInteger(options.nearestTo) : 1;\n\n if (nearestTo < 1 || nearestTo > 30) {\n throw new RangeError('`options.nearestTo` must be between 1 and 30');\n }\n\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds(); // relevant if nearestTo is 1, which is the default case\n\n var minutes = date.getMinutes() + seconds / 60;\n var roundedMinutes = Math.floor(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 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 * var 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 * var result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\n\nexport default function set(dirtyDate, values) {\n requiredArgs(2, arguments);\n\n if (typeof values !== 'object' || values === null) {\n throw new RangeError('values parameter must be an object');\n }\n\n var date = toDate(dirtyDate); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date)) {\n return new Date(NaN);\n }\n\n if (values.year != null) {\n date.setFullYear(values.year);\n }\n\n if (values.month != null) {\n date = setMonth(date, values.month);\n }\n\n if (values.date != null) {\n date.setDate(toInteger(values.date));\n }\n\n if (values.hours != null) {\n date.setHours(toInteger(values.hours));\n }\n\n if (values.minutes != null) {\n date.setMinutes(toInteger(values.minutes));\n }\n\n if (values.seconds != null) {\n date.setSeconds(toInteger(values.seconds));\n }\n\n if (values.milliseconds != null) {\n date.setMilliseconds(toInteger(values.milliseconds));\n }\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\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';\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport default function setDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate, options);\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, options);\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\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 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `setISOYear` to `setISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\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 * var result = setISOWeekYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\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); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\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 toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\n\nexport default function setWeek(dirtyDate, dirtyWeek, dirtyOptions) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getWeek(date, dirtyOptions) - 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';\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var result = setWeekYear(new Date(2010, 0, 2), 2004, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sat Jan 01 2005 00:00:00\n */\n\nexport default function setWeekYear(dirtyDate, dirtyWeekYear, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var date = toDate(dirtyDate);\n var weekYear = toInteger(dirtyWeekYear);\n var diff = differenceInCalendarDays(date, startOfWeekYear(date, dirtyOptions));\n var firstWeek = new Date(0);\n firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n date = startOfWeekYear(firstWeek, dirtyOptions);\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\n\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date)) {\n return new Date(NaN);\n }\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var 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';\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\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';\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var 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 * var result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n var date = startOfWeek(firstWeek, dirtyOptions);\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @returns {Date} the start of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var 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 subDays from '../subDays/index.js';\nimport subMonths from '../subMonths/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 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 */\n\nexport default function sub(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || typeof duration !== 'object') return new Date(NaN);\n var years = 'years' in duration ? toInteger(duration.years) : 0;\n var months = 'months' in duration ? toInteger(duration.months) : 0;\n var weeks = 'weeks' in duration ? toInteger(duration.weeks) : 0;\n var days = 'days' in duration ? toInteger(duration.days) : 0;\n var hours = 'hours' in duration ? toInteger(duration.hours) : 0;\n var minutes = 'minutes' in duration ? toInteger(duration.minutes) : 0;\n var seconds = 'seconds' in duration ? toInteger(duration.seconds) : 0; // Subtract years and months\n\n var dateWithoutMonths = subMonths(toDate(dirtyDate), months + years * 12); // Subtract weeks and days\n\n var dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7); // Subtract hours, minutes and seconds\n\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 toInteger from '../_lib/toInteger/index.js';\nimport addBusinessDays from '../addBusinessDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/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 * var result = subBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Aug 18 2014 00:00:00 (skipped weekend days)\n */\n\nexport default function subBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addBusinessDays(dirtyDate, -amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addDays from '../addDays/index.js';\nimport requiredArgs from '../_lib/requiredArgs/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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\n\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addHours from '../addHours/index.js';\nimport requiredArgs from '../_lib/requiredArgs/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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\n\nexport default function subHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addHours(dirtyDate, -amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addISOWeekYears from '../addISOWeekYears/index.js';\nimport requiredArgs from '../_lib/requiredArgs/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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `subISOYears` to `subISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\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 * var result = subISOWeekYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\n\nexport default function subISOWeekYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addISOWeekYears(dirtyDate, -amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMinutes from '../addMinutes/index.js';\nimport requiredArgs from '../_lib/requiredArgs/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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\n\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import 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 */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\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 arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map","/* flatpickr v4.6.6, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, (function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n }\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n };\n\n var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016, padded (0001-9999)\n Y: function (date) { return pad(date.getFullYear(), 4); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); },\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000,\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaults), flatpickr.defaultConfig),\n l10n: english,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date();\n var _a = getDefaultHours(), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n defaultDate.setHours(hours, minutes, seconds, 0);\n self.setDate(defaultDate, false);\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function getDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr)\n minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = self.config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options,\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"click\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput)\n bind(self._input, \"blur\", onBlur);\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n if (isInput &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n eventTarget && eventTarget.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n // https://github.com/microsoft/TypeScript/issues/31663\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n default: __assign({}, english),\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n})));\n","/* instafeed.js | v2.0.0-rc2 | https://github.com/stevenschobert/instafeed.js | License: MIT */\n(function exportInstafeed(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], factory);\n } else if (typeof exports === \"object\" && typeof exports.nodeName !== \"string\") {\n module.exports = factory();\n } else {\n root.Instafeed = factory();\n }\n})(this, function defineInstafeed() {\n function assert(val, msg) {\n if (!val) {\n throw new Error(msg);\n }\n }\n function Instafeed(options) {\n assert(!options || typeof options === \"object\", \"options must be an object, got \" + options + \" (\" + typeof options + \")\");\n var opts = {\n accessToken: null,\n accessTokenTimeout: 1e4,\n after: null,\n apiTimeout: 1e4,\n before: null,\n debug: false,\n error: null,\n filter: null,\n limit: null,\n mock: false,\n render: null,\n sort: null,\n success: null,\n target: \"instafeed\",\n template: '',\n templateBoundaries: [ \"{{\", \"}}\" ],\n transform: null\n };\n var state = {\n running: false\n };\n if (options) {\n for (var optKey in opts) {\n if (typeof options[optKey] !== \"undefined\") {\n opts[optKey] = options[optKey];\n }\n }\n }\n assert(typeof opts.target === \"string\" || typeof opts.target === \"object\", \"target must be a string or DOM node, got \" + opts.target + \" (\" + typeof opts.target + \")\");\n assert(typeof opts.accessToken === \"string\" || typeof opts.accessToken === \"function\", \"accessToken must be a string or function, got \" + opts.accessToken + \" (\" + typeof opts.accessToken + \")\");\n assert(typeof opts.accessTokenTimeout === \"number\", \"accessTokenTimeout must be a number, got \" + opts.accessTokenTimeout + \" (\" + typeof opts.accessTokenTimeout + \")\");\n assert(typeof opts.apiTimeout === \"number\", \"apiTimeout must be a number, got \" + opts.apiTimeout + \" (\" + typeof opts.apiTimeout + \")\");\n assert(typeof opts.debug === \"boolean\", \"debug must be true or false, got \" + opts.debug + \" (\" + typeof opts.debug + \")\");\n assert(typeof opts.mock === \"boolean\", \"mock must be true or false, got \" + opts.mock + \" (\" + typeof opts.mock + \")\");\n assert(typeof opts.templateBoundaries === \"object\" && opts.templateBoundaries.length === 2 && typeof opts.templateBoundaries[0] === \"string\" && typeof opts.templateBoundaries[1] === \"string\", \"templateBoundaries must be an array of 2 strings, got \" + opts.templateBoundaries + \" (\" + typeof opts.templateBoundaries + \")\");\n assert(!opts.template || typeof opts.template === \"string\", \"template must null or string, got \" + opts.template + \" (\" + typeof opts.template + \")\");\n assert(!opts.error || typeof opts.error === \"function\", \"error must be null or function, got \" + opts.error + \" (\" + typeof opts.error + \")\");\n assert(!opts.before || typeof opts.before === \"function\", \"before must be null or function, got \" + opts.before + \" (\" + typeof opts.before + \")\");\n assert(!opts.after || typeof opts.after === \"function\", \"after must be null or function, got \" + opts.after + \" (\" + typeof opts.after + \")\");\n assert(!opts.success || typeof opts.success === \"function\", \"success must be null or function, got \" + opts.success + \" (\" + typeof opts.success + \")\");\n assert(!opts.filter || typeof opts.filter === \"function\", \"filter must be null or function, got \" + opts.filter + \" (\" + typeof opts.filter + \")\");\n assert(!opts.transform || typeof opts.transform === \"function\", \"transform must be null or function, got \" + opts.transform + \" (\" + typeof opts.transform + \")\");\n assert(!opts.sort || typeof opts.sort === \"function\", \"sort must be null or function, got \" + opts.sort + \" (\" + typeof opts.sort + \")\");\n assert(!opts.render || typeof opts.render === \"function\", \"render must be null or function, got \" + opts.render + \" (\" + typeof opts.render + \")\");\n assert(!opts.limit || typeof opts.limit === \"number\", \"limit must be null or number, got \" + opts.limit + \" (\" + typeof opts.limit + \")\");\n this._state = state;\n this._options = opts;\n }\n Instafeed.prototype.run = function run() {\n var scope = this;\n var node = null;\n var url = null;\n var items = null;\n var html = null;\n this._debug(\"run\", \"options\", this._options);\n this._debug(\"run\", \"state\", this._state);\n if (this._state.running) {\n this._debug(\"run\", \"already running, skipping\");\n return false;\n }\n this._start();\n this._debug(\"run\", \"getting dom node\");\n if (typeof this._options.target === \"string\") {\n node = document.getElementById(this._options.target);\n } else {\n node = this._options.target;\n }\n if (!node) {\n this._fail(new Error(\"no element found with ID \" + this._options.target));\n return false;\n }\n this._debug(\"run\", \"got dom node\", node);\n this._debug(\"run\", \"getting access token\");\n this._getAccessToken(function onTokenReceived(err, token) {\n if (err) {\n scope._debug(\"onTokenReceived\", \"error\", err);\n scope._fail(new Error(\"error getting access token: \" + err.message));\n return;\n }\n url = \"https://graph.instagram.com/me/media?fields=caption,id,media_type,media_url,permalink,thumbnail_url,timestamp,username&access_token=\" + token;\n scope._debug(\"onTokenReceived\", \"request url\", url);\n scope._makeApiRequest(url, function onResponseReceived(err, data) {\n if (err) {\n scope._debug(\"onResponseReceived\", \"error\", err);\n scope._fail(new Error(\"api request error: \" + err.message));\n return;\n }\n scope._debug(\"onResponseReceived\", \"data\", data);\n scope._success(data);\n try {\n items = scope._processData(data);\n scope._debug(\"onResponseReceived\", \"processed data\", items);\n } catch (processErr) {\n scope._fail(processErr);\n return;\n }\n if (scope._options.mock) {\n scope._debug(\"onResponseReceived\", \"mock enabled, skipping render\");\n } else {\n try {\n html = scope._renderData(items);\n scope._debug(\"onResponseReceived\", \"html content\", html);\n } catch (renderErr) {\n scope._fail(renderErr);\n return;\n }\n node.innerHTML = html;\n }\n scope._finish();\n });\n });\n return true;\n };\n Instafeed.prototype._processData = function processData(data) {\n var hasTransform = typeof this._options.transform === \"function\";\n var hasFilter = typeof this._options.filter === \"function\";\n var hasSort = typeof this._options.sort === \"function\";\n var hasLimit = typeof this._options.limit === \"number\";\n var transformedFiltered = [];\n var limitDelta = null;\n var dataItem = null;\n var transformedItem = null;\n var filterResult = null;\n this._debug(\"processData\", \"hasFilter\", hasFilter, \"hasTransform\", hasTransform, \"hasSort\", hasSort, \"hasLimit\", hasLimit);\n if (typeof data !== \"object\" || typeof data.data !== \"object\" || data.data.length <= 0) {\n return null;\n }\n for (var i = 0; i < data.data.length; i++) {\n dataItem = this._getItemData(data.data[i]);\n if (hasTransform) {\n try {\n transformedItem = this._options.transform(dataItem);\n this._debug(\"processData\", \"transformed item\", dataItem, transformedItem);\n } catch (err) {\n this._debug(\"processData\", \"error calling transform\", err);\n throw new Error(\"error in transform: \" + err.message);\n }\n } else {\n transformedItem = dataItem;\n }\n if (hasFilter) {\n try {\n filterResult = this._options.filter(transformedItem);\n this._debug(\"processData\", \"filter item result\", transformedItem, filterResult);\n } catch (err) {\n this._debug(\"processData\", \"error calling filter\", err);\n throw new Error(\"error in filter: \" + err.message);\n }\n if (filterResult) {\n transformedFiltered.push(transformedItem);\n }\n } else {\n transformedFiltered.push(transformedItem);\n }\n }\n if (hasSort) {\n try {\n transformedFiltered.sort(this._options.sort);\n } catch (err) {\n this._debug(\"processData\", \"error calling sort\", err);\n throw new Error(\"error in sort: \" + err.message);\n }\n }\n if (hasLimit) {\n limitDelta = transformedFiltered.length - this._options.limit;\n this._debug(\"processData\", \"checking limit\", transformedFiltered.length, this._options.limit, limitDelta);\n if (limitDelta > 0) {\n transformedFiltered.splice(transformedFiltered.length - limitDelta, limitDelta);\n }\n }\n return transformedFiltered;\n };\n Instafeed.prototype._extractTags = function extractTags(str) {\n var exp = /#([^\\s]+)/gi;\n var badChars = /[~`!@#$%^&*\\(\\)\\-\\+={}\\[\\]:;\"'<>\\?,\\./|\\\\\\s]+/i;\n var tags = [];\n if (typeof str === \"string\") {\n while ((match = exp.exec(str)) !== null) {\n if (badChars.test(match[1]) === false) {\n tags.push(match[1]);\n }\n }\n }\n return tags;\n };\n Instafeed.prototype._getItemData = function getItemData(data) {\n var type = null;\n var image = null;\n switch (data.media_type) {\n case \"IMAGE\":\n type = \"image\";\n image = data.media_url;\n break;\n\n case \"VIDEO\":\n type = \"video\";\n image = data.thumbnail_url;\n break;\n\n case \"CAROUSEL_ALBUM\":\n type = \"album\";\n image = data.media_url;\n break;\n }\n return {\n caption: data.caption,\n tags: this._extractTags(data.caption),\n id: data.id,\n image: image,\n link: data.permalink,\n model: data,\n timestamp: data.timestamp,\n type: type,\n username: data.username\n };\n };\n Instafeed.prototype._renderData = function renderData(items) {\n var hasTemplate = typeof this._options.template === \"string\";\n var hasRender = typeof this._options.render === \"function\";\n var item = null;\n var itemHtml = null;\n var html = \"\";\n this._debug(\"renderData\", \"hasTemplate\", hasTemplate, \"hasRender\", hasRender);\n if (typeof items !== \"object\" || items.length <= 0) {\n return null;\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n if (hasRender) {\n try {\n itemHtml = this._options.render(item, this._options);\n this._debug(\"renderData\", \"custom render result\", item, itemHtml);\n } catch (err) {\n this._debug(\"renderData\", \"error calling render\", err);\n throw new Error(\"error in render: \" + err.message);\n }\n } else if (hasTemplate) {\n itemHtml = this._basicRender(item);\n }\n if (itemHtml) {\n html = html + itemHtml;\n } else {\n this._debug(\"renderData\", \"render item did not return any content\", item);\n }\n }\n return html;\n };\n Instafeed.prototype._basicRender = function basicRender(data) {\n var exp = new RegExp(this._options.templateBoundaries[0] + \"([\\\\s\\\\w.]+)\" + this._options.templateBoundaries[1], \"gm\");\n var template = this._options.template;\n var match = null;\n var output = \"\";\n var substr = null;\n var lastIndex = 0;\n var keyPath = null;\n var keyPathValue = null;\n while ((match = exp.exec(template)) !== null) {\n keyPath = match[1];\n substr = template.slice(lastIndex, match.index);\n output = output + substr;\n keyPathValue = this._valueForKeyPath(keyPath, data);\n if (keyPathValue) {\n output = output + keyPathValue.toString();\n }\n lastIndex = exp.lastIndex;\n }\n if (lastIndex < template.length) {\n substr = template.slice(lastIndex, template.length);\n output = output + substr;\n }\n return output;\n };\n Instafeed.prototype._valueForKeyPath = function valueForKeyPath(keyPath, data) {\n var exp = /([\\w]+)/gm;\n var match = null;\n var key = null;\n var lastValue = data;\n while ((match = exp.exec(keyPath)) !== null) {\n if (typeof lastValue !== \"object\") {\n return null;\n }\n key = match[1];\n lastValue = lastValue[key];\n }\n return lastValue;\n };\n Instafeed.prototype._fail = function fail(err) {\n var didHook = this._runHook(\"error\", err);\n if (!didHook && console && typeof console.error === \"function\") {\n console.error(err);\n }\n this._state.running = false;\n };\n Instafeed.prototype._start = function start() {\n this._state.running = true;\n this._runHook(\"before\");\n };\n Instafeed.prototype._finish = function finish() {\n this._runHook(\"after\");\n this._state.running = false;\n };\n Instafeed.prototype._success = function success(data) {\n this._runHook(\"success\", data);\n this._state.running = false;\n };\n Instafeed.prototype._makeApiRequest = function makeApiRequest(url, callback) {\n var called = false;\n var scope = this;\n var apiRequest = null;\n var callbackOnce = function callbackOnce(err, value) {\n if (!called) {\n called = true;\n callback(err, value);\n }\n };\n apiRequest = new XMLHttpRequest();\n apiRequest.ontimeout = function apiRequestTimedOut(event) {\n callbackOnce(new Error(\"api request timed out\"));\n };\n apiRequest.onerror = function apiRequestOnError(event) {\n callbackOnce(new Error(\"api connection error\"));\n };\n apiRequest.onload = function apiRequestOnLoad(event) {\n var contentType = apiRequest.getResponseHeader(\"Content-Type\");\n var responseJson = null;\n scope._debug(\"apiRequestOnLoad\", \"loaded\", event);\n scope._debug(\"apiRequestOnLoad\", \"response status\", apiRequest.status);\n scope._debug(\"apiRequestOnLoad\", \"response content type\", contentType);\n if (contentType.indexOf(\"application/json\") >= 0) {\n try {\n responseJson = JSON.parse(apiRequest.responseText);\n } catch (err) {\n scope._debug(\"apiRequestOnLoad\", \"json parsing error\", err, apiRequest.responseText);\n callbackOnce(new Error(\"error parsing response json\"));\n return;\n }\n }\n if (apiRequest.status !== 200) {\n if (responseJson && responseJson.error) {\n callbackOnce(new Error(responseJson.error.code + \" \" + responseJson.error.message));\n } else {\n callbackOnce(new Error(\"status code \" + apiRequest.status));\n }\n return;\n }\n callbackOnce(null, responseJson);\n };\n apiRequest.open(\"GET\", url, true);\n apiRequest.timeout = this._options.apiTimeout;\n apiRequest.send();\n };\n Instafeed.prototype._getAccessToken = function getAccessToken(callback) {\n var called = false;\n var scope = this;\n var timeoutCheck = null;\n var callbackOnce = function callbackOnce(err, value) {\n if (!called) {\n called = true;\n clearTimeout(timeoutCheck);\n callback(err, value);\n }\n };\n if (typeof this._options.accessToken === \"function\") {\n this._debug(\"getAccessToken\", \"calling accessToken as function\");\n timeoutCheck = setTimeout(function accessTokenTimeoutCheck() {\n scope._debug(\"getAccessToken\", \"timeout check\", called);\n callbackOnce(new Error(\"accessToken timed out\"), null);\n }, this._options.accessTokenTimeout);\n try {\n this._options.accessToken(function accessTokenReceiver(err, value) {\n scope._debug(\"getAccessToken\", \"received accessToken callback\", called, err, value);\n callbackOnce(err, value);\n });\n } catch (err) {\n this._debug(\"getAccessToken\", \"error invoking the accessToken as function\", err);\n callbackOnce(err, null);\n }\n } else {\n this._debug(\"getAccessToken\", \"treating accessToken as static\", typeof this._options.accessToken);\n callbackOnce(null, this._options.accessToken);\n }\n };\n Instafeed.prototype._debug = function debug() {\n var args = null;\n if (this._options.debug && console && typeof console.log === \"function\") {\n args = [].slice.call(arguments);\n args[0] = \"[Instafeed] [\" + args[0] + \"]\";\n console.log.apply(null, args);\n }\n };\n Instafeed.prototype._runHook = function runHook(hookName, data) {\n var success = false;\n if (typeof this._options[hookName] === \"function\") {\n try {\n this._options[hookName](data);\n success = true;\n } catch (err) {\n this._debug(\"runHook\", \"error calling hook\", hookName, err);\n }\n }\n return success;\n };\n return Instafeed;\n});","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Konva = factory());\n}(this, (function () { 'use strict';\n\n /*\r\n * Konva JavaScript Framework v7.0.6\r\n * http://konvajs.org/\r\n * Licensed under the MIT\r\n * Date: Fri Aug 21 2020\r\n *\r\n * Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS)\r\n * Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva)\r\n *\r\n * @license\r\n */\r\n var PI_OVER_180 = Math.PI / 180;\r\n /**\r\n * @namespace Konva\r\n */\r\n function detectBrowser() {\r\n return (typeof window !== 'undefined' &&\r\n // browser case\r\n ({}.toString.call(window) === '[object Window]' ||\r\n // electron case\r\n {}.toString.call(window) === '[object global]'));\r\n }\r\n var _detectIE = function (ua) {\r\n var msie = ua.indexOf('msie ');\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n }\r\n var trident = ua.indexOf('trident/');\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n var rv = ua.indexOf('rv:');\r\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n }\r\n var edge = ua.indexOf('edge/');\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n }\r\n // other browser\r\n return false;\r\n };\r\n var _parseUA = function (userAgent) {\r\n var ua = userAgent.toLowerCase(), \r\n // jQuery UA regex\r\n match = /(chrome)[ /]([\\w.]+)/.exec(ua) ||\r\n /(webkit)[ /]([\\w.]+)/.exec(ua) ||\r\n /(opera)(?:.*version|)[ /]([\\w.]+)/.exec(ua) ||\r\n /(msie) ([\\w.]+)/.exec(ua) ||\r\n (ua.indexOf('compatible') < 0 &&\r\n /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua)) ||\r\n [], \r\n // adding mobile flag as well\r\n mobile = !!userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i), ieMobile = !!userAgent.match(/IEMobile/i);\r\n return {\r\n browser: match[1] || '',\r\n version: match[2] || '0',\r\n isIE: _detectIE(ua),\r\n // adding mobile flab\r\n mobile: mobile,\r\n ieMobile: ieMobile // If this is true (i.e., WP8), then Konva touch events are executed instead of equivalent Konva mouse events\r\n };\r\n };\r\n var glob = typeof global !== 'undefined'\r\n ? global\r\n : typeof window !== 'undefined'\r\n ? window\r\n : typeof WorkerGlobalScope !== 'undefined'\r\n ? self\r\n : {};\r\n var Konva = {\r\n _global: glob,\r\n version: '7.0.6',\r\n isBrowser: detectBrowser(),\r\n isUnminified: /param/.test(function (param) { }.toString()),\r\n dblClickWindow: 400,\r\n getAngle: function (angle) {\r\n return Konva.angleDeg ? angle * PI_OVER_180 : angle;\r\n },\r\n enableTrace: false,\r\n _pointerEventsEnabled: false,\r\n /**\r\n * Should we enable hit detection while dragging? For performance reasons, by default it is false.\r\n * But on some rare cases you want to see hit graph and check intersections. Just set it to true.\r\n * @property hitOnDragEnabled\r\n * @default false\r\n * @name hitOnDragEnabled\r\n * @memberof Konva\r\n * @example\r\n * Konva.hitOnDragEnabled = true;\r\n */\r\n hitOnDragEnabled: false,\r\n /**\r\n * Should we capture touch events and bind them to the touchstart target? That is how it works on DOM elements.\r\n * The case: we touchstart on div1, then touchmove out of that element into another element div2.\r\n * DOM will continue trigger touchmove events on div1 (not div2). Because events are \"captured\" into initial target.\r\n * By default Konva do not do that and will trigger touchmove on another element, while pointer is moving.\r\n * @property captureTouchEventsEnabled\r\n * @default false\r\n * @name captureTouchEventsEnabled\r\n * @memberof Konva\r\n * @example\r\n * Konva.captureTouchEventsEnabled = true;\r\n */\r\n captureTouchEventsEnabled: false,\r\n // TODO: move that to stage?\r\n listenClickTap: false,\r\n inDblClickWindow: false,\r\n /**\r\n * Global pixel ratio configuration. KonvaJS automatically detect pixel ratio of current device.\r\n * But you may override such property, if you want to use your value. Set this value before any components initializations.\r\n * @property pixelRatio\r\n * @default undefined\r\n * @name pixelRatio\r\n * @memberof Konva\r\n * @example\r\n * // before any Konva code:\r\n * Konva.pixelRatio = 1;\r\n */\r\n pixelRatio: undefined,\r\n /**\r\n * Drag distance property. If you start to drag a node you may want to wait until pointer is moved to some distance from start point,\r\n * only then start dragging. Default is 3px.\r\n * @property dragDistance\r\n * @default 0\r\n * @memberof Konva\r\n * @example\r\n * Konva.dragDistance = 10;\r\n */\r\n dragDistance: 3,\r\n /**\r\n * Use degree values for angle properties. You may set this property to false if you want to use radian values.\r\n * @property angleDeg\r\n * @default true\r\n * @memberof Konva\r\n * @example\r\n * node.rotation(45); // 45 degrees\r\n * Konva.angleDeg = false;\r\n * node.rotation(Math.PI / 2); // PI/2 radian\r\n */\r\n angleDeg: true,\r\n /**\r\n * Show different warnings about errors or wrong API usage\r\n * @property showWarnings\r\n * @default true\r\n * @memberof Konva\r\n * @example\r\n * Konva.showWarnings = false;\r\n */\r\n showWarnings: true,\r\n /**\r\n * Configure what mouse buttons can be used for drag and drop.\r\n * Default value is [0] - only left mouse button.\r\n * @property dragButtons\r\n * @default true\r\n * @memberof Konva\r\n * @example\r\n * // enable left and right mouse buttons\r\n * Konva.dragButtons = [0, 2];\r\n */\r\n dragButtons: [0, 1],\r\n /**\r\n * returns whether or not drag and drop is currently active\r\n * @method\r\n * @memberof Konva\r\n */\r\n isDragging: function () {\r\n return Konva['DD'].isDragging;\r\n },\r\n /**\r\n * returns whether or not a drag and drop operation is ready, but may\r\n * not necessarily have started\r\n * @method\r\n * @memberof Konva\r\n */\r\n isDragReady: function () {\r\n return !!Konva['DD'].node;\r\n },\r\n // user agent\r\n UA: _parseUA((glob.navigator && glob.navigator.userAgent) || ''),\r\n document: glob.document,\r\n // insert Konva into global namespace (window)\r\n // it is required for npm packages\r\n _injectGlobal: function (Konva) {\r\n glob.Konva = Konva;\r\n },\r\n _parseUA: _parseUA\r\n };\r\n var _NODES_REGISTRY = {};\r\n var _registerNode = function (NodeClass) {\r\n _NODES_REGISTRY[NodeClass.prototype.getClassName()] = NodeClass;\r\n Konva[NodeClass.prototype.getClassName()] = NodeClass;\r\n };\n\n /**\r\n * Collection constructor. Collection extends Array.\r\n * This class is used in conjunction with {@link Konva.Container#find}\r\n * The good thing about collection is that it has ALL methods of all Konva nodes. Take a look into examples.\r\n * @constructor\r\n * @memberof Konva\r\n * @example\r\n *\r\n * // find all rectangles and return them as Collection\r\n * const shapes = layer.find('Rect');\r\n * // fill all rectangles with a single function\r\n * shapes.fill('red');\r\n */\r\n var Collection = /** @class */ (function () {\r\n function Collection() {\r\n }\r\n /**\r\n * convert array into a collection\r\n * @method\r\n * @memberof Konva.Collection\r\n * @param {Array} arr\r\n */\r\n Collection.toCollection = function (arr) {\r\n var collection = new Collection(), len = arr.length, n;\r\n for (n = 0; n < len; n++) {\r\n collection.push(arr[n]);\r\n }\r\n return collection;\r\n };\r\n Collection._mapMethod = function (methodName) {\r\n Collection.prototype[methodName] = function () {\r\n var len = this.length, i;\r\n var args = [].slice.call(arguments);\r\n for (i = 0; i < len; i++) {\r\n this[i][methodName].apply(this[i], args);\r\n }\r\n return this;\r\n };\r\n };\r\n Collection.mapMethods = function (constructor) {\r\n var prot = constructor.prototype;\r\n for (var methodName in prot) {\r\n Collection._mapMethod(methodName);\r\n }\r\n };\r\n return Collection;\r\n }());\r\n Collection.prototype = [];\r\n /**\r\n * iterate through node array and run a function for each node.\r\n * The node and index is passed into the function\r\n * @method\r\n * @name Konva.Collection#each\r\n * @param {Function} func\r\n * @example\r\n * // get all nodes with name foo inside layer, and set x to 10 for each\r\n * layer.find('.foo').each(function(shape, n) {\r\n * shape.setX(10);\r\n * });\r\n */\r\n Collection.prototype.each = function (func) {\r\n for (var n = 0; n < this.length; n++) {\r\n func(this[n], n);\r\n }\r\n };\r\n /**\r\n * convert collection into an array\r\n * @method\r\n * @name Konva.Collection#toArray\r\n */\r\n Collection.prototype.toArray = function () {\r\n var arr = [], len = this.length, n;\r\n for (n = 0; n < len; n++) {\r\n arr.push(this[n]);\r\n }\r\n return arr;\r\n };\r\n /*\r\n * Last updated November 2011\r\n * By Simon Sarris\r\n * www.simonsarris.com\r\n * sarris@acm.org\r\n *\r\n * Free to use and distribute at will\r\n * So long as you are nice to people, etc\r\n */\r\n /*\r\n * The usage of this class was inspired by some of the work done by a forked\r\n * project, KineticJS-Ext by Wappworks, which is based on Simon's Transform\r\n * class. Modified by Eric Rowell\r\n */\r\n /**\r\n * Transform constructor.\r\n * In most of the cases you don't need to use it in your app. Because it is for internal usage in Konva core.\r\n * But there is a documentation for that class in case you still want\r\n * to make some manual calculations.\r\n * @constructor\r\n * @param {Array} [m] Optional six-element matrix\r\n * @memberof Konva\r\n */\r\n var Transform = /** @class */ (function () {\r\n function Transform(m) {\r\n if (m === void 0) { m = [1, 0, 0, 1, 0, 0]; }\r\n this.dirty = false;\r\n this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\r\n }\r\n Transform.prototype.reset = function () {\r\n this.m[0] = 1;\r\n this.m[1] = 0;\r\n this.m[2] = 0;\r\n this.m[3] = 1;\r\n this.m[4] = 0;\r\n this.m[5] = 0;\r\n };\r\n /**\r\n * Copy Konva.Transform object\r\n * @method\r\n * @name Konva.Transform#copy\r\n * @returns {Konva.Transform}\r\n * @example\r\n * const tr = shape.getTransform().copy()\r\n */\r\n Transform.prototype.copy = function () {\r\n return new Transform(this.m);\r\n };\r\n Transform.prototype.copyInto = function (tr) {\r\n tr.m[0] = this.m[0];\r\n tr.m[1] = this.m[1];\r\n tr.m[2] = this.m[2];\r\n tr.m[3] = this.m[3];\r\n tr.m[4] = this.m[4];\r\n tr.m[5] = this.m[5];\r\n };\r\n /**\r\n * Transform point\r\n * @method\r\n * @name Konva.Transform#point\r\n * @param {Object} point 2D point(x, y)\r\n * @returns {Object} 2D point(x, y)\r\n */\r\n Transform.prototype.point = function (point) {\r\n var m = this.m;\r\n return {\r\n x: m[0] * point.x + m[2] * point.y + m[4],\r\n y: m[1] * point.x + m[3] * point.y + m[5],\r\n };\r\n };\r\n /**\r\n * Apply translation\r\n * @method\r\n * @name Konva.Transform#translate\r\n * @param {Number} x\r\n * @param {Number} y\r\n * @returns {Konva.Transform}\r\n */\r\n Transform.prototype.translate = function (x, y) {\r\n this.m[4] += this.m[0] * x + this.m[2] * y;\r\n this.m[5] += this.m[1] * x + this.m[3] * y;\r\n return this;\r\n };\r\n /**\r\n * Apply scale\r\n * @method\r\n * @name Konva.Transform#scale\r\n * @param {Number} sx\r\n * @param {Number} sy\r\n * @returns {Konva.Transform}\r\n */\r\n Transform.prototype.scale = function (sx, sy) {\r\n this.m[0] *= sx;\r\n this.m[1] *= sx;\r\n this.m[2] *= sy;\r\n this.m[3] *= sy;\r\n return this;\r\n };\r\n /**\r\n * Apply rotation\r\n * @method\r\n * @name Konva.Transform#rotate\r\n * @param {Number} rad Angle in radians\r\n * @returns {Konva.Transform}\r\n */\r\n Transform.prototype.rotate = function (rad) {\r\n var c = Math.cos(rad);\r\n var s = Math.sin(rad);\r\n var m11 = this.m[0] * c + this.m[2] * s;\r\n var m12 = this.m[1] * c + this.m[3] * s;\r\n var m21 = this.m[0] * -s + this.m[2] * c;\r\n var m22 = this.m[1] * -s + this.m[3] * c;\r\n this.m[0] = m11;\r\n this.m[1] = m12;\r\n this.m[2] = m21;\r\n this.m[3] = m22;\r\n return this;\r\n };\r\n /**\r\n * Returns the translation\r\n * @method\r\n * @name Konva.Transform#getTranslation\r\n * @returns {Object} 2D point(x, y)\r\n */\r\n Transform.prototype.getTranslation = function () {\r\n return {\r\n x: this.m[4],\r\n y: this.m[5],\r\n };\r\n };\r\n /**\r\n * Apply skew\r\n * @method\r\n * @name Konva.Transform#skew\r\n * @param {Number} sx\r\n * @param {Number} sy\r\n * @returns {Konva.Transform}\r\n */\r\n Transform.prototype.skew = function (sx, sy) {\r\n var m11 = this.m[0] + this.m[2] * sy;\r\n var m12 = this.m[1] + this.m[3] * sy;\r\n var m21 = this.m[2] + this.m[0] * sx;\r\n var m22 = this.m[3] + this.m[1] * sx;\r\n this.m[0] = m11;\r\n this.m[1] = m12;\r\n this.m[2] = m21;\r\n this.m[3] = m22;\r\n return this;\r\n };\r\n /**\r\n * Transform multiplication\r\n * @method\r\n * @name Konva.Transform#multiply\r\n * @param {Konva.Transform} matrix\r\n * @returns {Konva.Transform}\r\n */\r\n Transform.prototype.multiply = function (matrix) {\r\n var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\r\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\r\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\r\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\r\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\r\n var dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\r\n this.m[0] = m11;\r\n this.m[1] = m12;\r\n this.m[2] = m21;\r\n this.m[3] = m22;\r\n this.m[4] = dx;\r\n this.m[5] = dy;\r\n return this;\r\n };\r\n /**\r\n * Invert the matrix\r\n * @method\r\n * @name Konva.Transform#invert\r\n * @returns {Konva.Transform}\r\n */\r\n Transform.prototype.invert = function () {\r\n var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\r\n var m0 = this.m[3] * d;\r\n var m1 = -this.m[1] * d;\r\n var m2 = -this.m[2] * d;\r\n var m3 = this.m[0] * d;\r\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\r\n var m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\r\n this.m[0] = m0;\r\n this.m[1] = m1;\r\n this.m[2] = m2;\r\n this.m[3] = m3;\r\n this.m[4] = m4;\r\n this.m[5] = m5;\r\n return this;\r\n };\r\n /**\r\n * return matrix\r\n * @method\r\n * @name Konva.Transform#getMatrix\r\n */\r\n Transform.prototype.getMatrix = function () {\r\n return this.m;\r\n };\r\n /**\r\n * set to absolute position via translation\r\n * @method\r\n * @name Konva.Transform#setAbsolutePosition\r\n * @returns {Konva.Transform}\r\n * @author ericdrowell\r\n */\r\n Transform.prototype.setAbsolutePosition = function (x, y) {\r\n var m0 = this.m[0], m1 = this.m[1], m2 = this.m[2], m3 = this.m[3], m4 = this.m[4], m5 = this.m[5], yt = (m0 * (y - m5) - m1 * (x - m4)) / (m0 * m3 - m1 * m2), xt = (x - m4 - m2 * yt) / m0;\r\n return this.translate(xt, yt);\r\n };\r\n /**\r\n * convert transformation matrix back into node's attributes\r\n * @method\r\n * @name Konva.Transform#decompose\r\n * @returns {Konva.Transform}\r\n */\r\n Transform.prototype.decompose = function () {\r\n var a = this.m[0];\r\n var b = this.m[1];\r\n var c = this.m[2];\r\n var d = this.m[3];\r\n var e = this.m[4];\r\n var f = this.m[5];\r\n var delta = a * d - b * c;\r\n var result = {\r\n x: e,\r\n y: f,\r\n rotation: 0,\r\n scaleX: 0,\r\n scaleY: 0,\r\n skewX: 0,\r\n skewY: 0,\r\n };\r\n // Apply the QR-like decomposition.\r\n if (a != 0 || b != 0) {\r\n var r = Math.sqrt(a * a + b * b);\r\n result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\r\n result.scaleX = r;\r\n result.scaleY = delta / r;\r\n result.skewX = (a * c + b * d) / delta;\r\n result.skewY = 0;\r\n }\r\n else if (c != 0 || d != 0) {\r\n var s = Math.sqrt(c * c + d * d);\r\n result.rotation =\r\n Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\r\n result.scaleX = delta / s;\r\n result.scaleY = s;\r\n result.skewX = 0;\r\n result.skewY = (a * c + b * d) / delta;\r\n }\r\n result.rotation = Util._getRotation(result.rotation);\r\n return result;\r\n };\r\n return Transform;\r\n }());\r\n // CONSTANTS\r\n var OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\r\n aliceblue: [240, 248, 255],\r\n antiquewhite: [250, 235, 215],\r\n aqua: [0, 255, 255],\r\n aquamarine: [127, 255, 212],\r\n azure: [240, 255, 255],\r\n beige: [245, 245, 220],\r\n bisque: [255, 228, 196],\r\n black: [0, 0, 0],\r\n blanchedalmond: [255, 235, 205],\r\n blue: [0, 0, 255],\r\n blueviolet: [138, 43, 226],\r\n brown: [165, 42, 42],\r\n burlywood: [222, 184, 135],\r\n cadetblue: [95, 158, 160],\r\n chartreuse: [127, 255, 0],\r\n chocolate: [210, 105, 30],\r\n coral: [255, 127, 80],\r\n cornflowerblue: [100, 149, 237],\r\n cornsilk: [255, 248, 220],\r\n crimson: [220, 20, 60],\r\n cyan: [0, 255, 255],\r\n darkblue: [0, 0, 139],\r\n darkcyan: [0, 139, 139],\r\n darkgoldenrod: [184, 132, 11],\r\n darkgray: [169, 169, 169],\r\n darkgreen: [0, 100, 0],\r\n darkgrey: [169, 169, 169],\r\n darkkhaki: [189, 183, 107],\r\n darkmagenta: [139, 0, 139],\r\n darkolivegreen: [85, 107, 47],\r\n darkorange: [255, 140, 0],\r\n darkorchid: [153, 50, 204],\r\n darkred: [139, 0, 0],\r\n darksalmon: [233, 150, 122],\r\n darkseagreen: [143, 188, 143],\r\n darkslateblue: [72, 61, 139],\r\n darkslategray: [47, 79, 79],\r\n darkslategrey: [47, 79, 79],\r\n darkturquoise: [0, 206, 209],\r\n darkviolet: [148, 0, 211],\r\n deeppink: [255, 20, 147],\r\n deepskyblue: [0, 191, 255],\r\n dimgray: [105, 105, 105],\r\n dimgrey: [105, 105, 105],\r\n dodgerblue: [30, 144, 255],\r\n firebrick: [178, 34, 34],\r\n floralwhite: [255, 255, 240],\r\n forestgreen: [34, 139, 34],\r\n fuchsia: [255, 0, 255],\r\n gainsboro: [220, 220, 220],\r\n ghostwhite: [248, 248, 255],\r\n gold: [255, 215, 0],\r\n goldenrod: [218, 165, 32],\r\n gray: [128, 128, 128],\r\n green: [0, 128, 0],\r\n greenyellow: [173, 255, 47],\r\n grey: [128, 128, 128],\r\n honeydew: [240, 255, 240],\r\n hotpink: [255, 105, 180],\r\n indianred: [205, 92, 92],\r\n indigo: [75, 0, 130],\r\n ivory: [255, 255, 240],\r\n khaki: [240, 230, 140],\r\n lavender: [230, 230, 250],\r\n lavenderblush: [255, 240, 245],\r\n lawngreen: [124, 252, 0],\r\n lemonchiffon: [255, 250, 205],\r\n lightblue: [173, 216, 230],\r\n lightcoral: [240, 128, 128],\r\n lightcyan: [224, 255, 255],\r\n lightgoldenrodyellow: [250, 250, 210],\r\n lightgray: [211, 211, 211],\r\n lightgreen: [144, 238, 144],\r\n lightgrey: [211, 211, 211],\r\n lightpink: [255, 182, 193],\r\n lightsalmon: [255, 160, 122],\r\n lightseagreen: [32, 178, 170],\r\n lightskyblue: [135, 206, 250],\r\n lightslategray: [119, 136, 153],\r\n lightslategrey: [119, 136, 153],\r\n lightsteelblue: [176, 196, 222],\r\n lightyellow: [255, 255, 224],\r\n lime: [0, 255, 0],\r\n limegreen: [50, 205, 50],\r\n linen: [250, 240, 230],\r\n magenta: [255, 0, 255],\r\n maroon: [128, 0, 0],\r\n mediumaquamarine: [102, 205, 170],\r\n mediumblue: [0, 0, 205],\r\n mediumorchid: [186, 85, 211],\r\n mediumpurple: [147, 112, 219],\r\n mediumseagreen: [60, 179, 113],\r\n mediumslateblue: [123, 104, 238],\r\n mediumspringgreen: [0, 250, 154],\r\n mediumturquoise: [72, 209, 204],\r\n mediumvioletred: [199, 21, 133],\r\n midnightblue: [25, 25, 112],\r\n mintcream: [245, 255, 250],\r\n mistyrose: [255, 228, 225],\r\n moccasin: [255, 228, 181],\r\n navajowhite: [255, 222, 173],\r\n navy: [0, 0, 128],\r\n oldlace: [253, 245, 230],\r\n olive: [128, 128, 0],\r\n olivedrab: [107, 142, 35],\r\n orange: [255, 165, 0],\r\n orangered: [255, 69, 0],\r\n orchid: [218, 112, 214],\r\n palegoldenrod: [238, 232, 170],\r\n palegreen: [152, 251, 152],\r\n paleturquoise: [175, 238, 238],\r\n palevioletred: [219, 112, 147],\r\n papayawhip: [255, 239, 213],\r\n peachpuff: [255, 218, 185],\r\n peru: [205, 133, 63],\r\n pink: [255, 192, 203],\r\n plum: [221, 160, 203],\r\n powderblue: [176, 224, 230],\r\n purple: [128, 0, 128],\r\n rebeccapurple: [102, 51, 153],\r\n red: [255, 0, 0],\r\n rosybrown: [188, 143, 143],\r\n royalblue: [65, 105, 225],\r\n saddlebrown: [139, 69, 19],\r\n salmon: [250, 128, 114],\r\n sandybrown: [244, 164, 96],\r\n seagreen: [46, 139, 87],\r\n seashell: [255, 245, 238],\r\n sienna: [160, 82, 45],\r\n silver: [192, 192, 192],\r\n skyblue: [135, 206, 235],\r\n slateblue: [106, 90, 205],\r\n slategray: [119, 128, 144],\r\n slategrey: [119, 128, 144],\r\n snow: [255, 255, 250],\r\n springgreen: [0, 255, 127],\r\n steelblue: [70, 130, 180],\r\n tan: [210, 180, 140],\r\n teal: [0, 128, 128],\r\n thistle: [216, 191, 216],\r\n transparent: [255, 255, 255, 0],\r\n tomato: [255, 99, 71],\r\n turquoise: [64, 224, 208],\r\n violet: [238, 130, 238],\r\n wheat: [245, 222, 179],\r\n white: [255, 255, 255],\r\n whitesmoke: [245, 245, 245],\r\n yellow: [255, 255, 0],\r\n yellowgreen: [154, 205, 5],\r\n }, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/, animQueue = [];\r\n /**\r\n * @namespace Util\r\n * @memberof Konva\r\n */\r\n var Util = {\r\n /*\r\n * cherry-picked utilities from underscore.js\r\n */\r\n _isElement: function (obj) {\r\n return !!(obj && obj.nodeType == 1);\r\n },\r\n _isFunction: function (obj) {\r\n return !!(obj && obj.constructor && obj.call && obj.apply);\r\n },\r\n _isPlainObject: function (obj) {\r\n return !!obj && obj.constructor === Object;\r\n },\r\n _isArray: function (obj) {\r\n return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\r\n },\r\n _isNumber: function (obj) {\r\n return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\r\n !isNaN(obj) &&\r\n isFinite(obj));\r\n },\r\n _isString: function (obj) {\r\n return Object.prototype.toString.call(obj) === OBJECT_STRING;\r\n },\r\n _isBoolean: function (obj) {\r\n return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\r\n },\r\n // arrays are objects too\r\n isObject: function (val) {\r\n return val instanceof Object;\r\n },\r\n isValidSelector: function (selector) {\r\n if (typeof selector !== 'string') {\r\n return false;\r\n }\r\n var firstChar = selector[0];\r\n return (firstChar === '#' ||\r\n firstChar === '.' ||\r\n firstChar === firstChar.toUpperCase());\r\n },\r\n _sign: function (number) {\r\n if (number === 0) {\r\n return 0;\r\n }\r\n if (number > 0) {\r\n return 1;\r\n }\r\n else {\r\n return -1;\r\n }\r\n },\r\n requestAnimFrame: function (callback) {\r\n animQueue.push(callback);\r\n if (animQueue.length === 1) {\r\n requestAnimationFrame(function () {\r\n var queue = animQueue;\r\n animQueue = [];\r\n queue.forEach(function (cb) {\r\n cb();\r\n });\r\n });\r\n }\r\n },\r\n createCanvasElement: function () {\r\n var canvas = document.createElement('canvas');\r\n // on some environments canvas.style is readonly\r\n try {\r\n canvas.style = canvas.style || {};\r\n }\r\n catch (e) { }\r\n return canvas;\r\n },\r\n createImageElement: function () {\r\n return document.createElement('img');\r\n },\r\n _isInDocument: function (el) {\r\n while ((el = el.parentNode)) {\r\n if (el == document) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n _simplifyArray: function (arr) {\r\n var retArr = [], len = arr.length, util = Util, n, val;\r\n for (n = 0; n < len; n++) {\r\n val = arr[n];\r\n if (util._isNumber(val)) {\r\n val = Math.round(val * 1000) / 1000;\r\n }\r\n else if (!util._isString(val)) {\r\n val = val.toString();\r\n }\r\n retArr.push(val);\r\n }\r\n return retArr;\r\n },\r\n /*\r\n * arg can be an image object or image data\r\n */\r\n _urlToImage: function (url, callback) {\r\n // if arg is a string, then it's a data url\r\n var imageObj = new glob.Image();\r\n imageObj.onload = function () {\r\n callback(imageObj);\r\n };\r\n imageObj.src = url;\r\n },\r\n _rgbToHex: function (r, g, b) {\r\n return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\r\n },\r\n _hexToRgb: function (hex) {\r\n hex = hex.replace(HASH, EMPTY_STRING);\r\n var bigint = parseInt(hex, 16);\r\n return {\r\n r: (bigint >> 16) & 255,\r\n g: (bigint >> 8) & 255,\r\n b: bigint & 255,\r\n };\r\n },\r\n /**\r\n * return random hex color\r\n * @method\r\n * @memberof Konva.Util\r\n * @example\r\n * shape.fill(Konva.Util.getRandomColor());\r\n */\r\n getRandomColor: function () {\r\n var randColor = ((Math.random() * 0xffffff) << 0).toString(16);\r\n while (randColor.length < 6) {\r\n randColor = ZERO + randColor;\r\n }\r\n return HASH + randColor;\r\n },\r\n get: function (val, def) {\r\n if (val === undefined) {\r\n return def;\r\n }\r\n else {\r\n return val;\r\n }\r\n },\r\n /**\r\n * get RGB components of a color\r\n * @method\r\n * @memberof Konva.Util\r\n * @param {String} color\r\n * @example\r\n * // each of the following examples return {r:0, g:0, b:255}\r\n * var rgb = Konva.Util.getRGB('blue');\r\n * var rgb = Konva.Util.getRGB('#0000ff');\r\n * var rgb = Konva.Util.getRGB('rgb(0,0,255)');\r\n */\r\n getRGB: function (color) {\r\n var rgb;\r\n // color string\r\n if (color in COLORS) {\r\n rgb = COLORS[color];\r\n return {\r\n r: rgb[0],\r\n g: rgb[1],\r\n b: rgb[2],\r\n };\r\n }\r\n else if (color[0] === HASH) {\r\n // hex\r\n return this._hexToRgb(color.substring(1));\r\n }\r\n else if (color.substr(0, 4) === RGB_PAREN) {\r\n // rgb string\r\n rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\r\n return {\r\n r: parseInt(rgb[1], 10),\r\n g: parseInt(rgb[2], 10),\r\n b: parseInt(rgb[3], 10),\r\n };\r\n }\r\n else {\r\n // default\r\n return {\r\n r: 0,\r\n g: 0,\r\n b: 0,\r\n };\r\n }\r\n },\r\n // convert any color string to RGBA object\r\n // from https://github.com/component/color-parser\r\n colorToRGBA: function (str) {\r\n str = str || 'black';\r\n return (Util._namedColorToRBA(str) ||\r\n Util._hex3ColorToRGBA(str) ||\r\n Util._hex6ColorToRGBA(str) ||\r\n Util._rgbColorToRGBA(str) ||\r\n Util._rgbaColorToRGBA(str) ||\r\n Util._hslColorToRGBA(str));\r\n },\r\n // Parse named css color. Like \"green\"\r\n _namedColorToRBA: function (str) {\r\n var c = COLORS[str.toLowerCase()];\r\n if (!c) {\r\n return null;\r\n }\r\n return {\r\n r: c[0],\r\n g: c[1],\r\n b: c[2],\r\n a: 1,\r\n };\r\n },\r\n // Parse rgb(n, n, n)\r\n _rgbColorToRGBA: function (str) {\r\n if (str.indexOf('rgb(') === 0) {\r\n str = str.match(/rgb\\(([^)]+)\\)/)[1];\r\n var parts = str.split(/ *, */).map(Number);\r\n return {\r\n r: parts[0],\r\n g: parts[1],\r\n b: parts[2],\r\n a: 1,\r\n };\r\n }\r\n },\r\n // Parse rgba(n, n, n, n)\r\n _rgbaColorToRGBA: function (str) {\r\n if (str.indexOf('rgba(') === 0) {\r\n str = str.match(/rgba\\(([^)]+)\\)/)[1];\r\n var parts = str.split(/ *, */).map(Number);\r\n return {\r\n r: parts[0],\r\n g: parts[1],\r\n b: parts[2],\r\n a: parts[3],\r\n };\r\n }\r\n },\r\n // Parse #nnnnnn\r\n _hex6ColorToRGBA: function (str) {\r\n if (str[0] === '#' && str.length === 7) {\r\n return {\r\n r: parseInt(str.slice(1, 3), 16),\r\n g: parseInt(str.slice(3, 5), 16),\r\n b: parseInt(str.slice(5, 7), 16),\r\n a: 1,\r\n };\r\n }\r\n },\r\n // Parse #nnn\r\n _hex3ColorToRGBA: function (str) {\r\n if (str[0] === '#' && str.length === 4) {\r\n return {\r\n r: parseInt(str[1] + str[1], 16),\r\n g: parseInt(str[2] + str[2], 16),\r\n b: parseInt(str[3] + str[3], 16),\r\n a: 1,\r\n };\r\n }\r\n },\r\n // Code adapted from https://github.com/Qix-/color-convert/blob/master/conversions.js#L244\r\n _hslColorToRGBA: function (str) {\r\n // Check hsl() format\r\n if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\r\n // Extract h, s, l\r\n var _a = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str), _ = _a[0], hsl = _a.slice(1);\r\n var h = Number(hsl[0]) / 360;\r\n var s = Number(hsl[1]) / 100;\r\n var l = Number(hsl[2]) / 100;\r\n var t2 = void 0;\r\n var t3 = void 0;\r\n var val = void 0;\r\n if (s === 0) {\r\n val = l * 255;\r\n return {\r\n r: Math.round(val),\r\n g: Math.round(val),\r\n b: Math.round(val),\r\n a: 1,\r\n };\r\n }\r\n if (l < 0.5) {\r\n t2 = l * (1 + s);\r\n }\r\n else {\r\n t2 = l + s - l * s;\r\n }\r\n var t1 = 2 * l - t2;\r\n var rgb = [0, 0, 0];\r\n for (var i = 0; i < 3; i++) {\r\n t3 = h + (1 / 3) * -(i - 1);\r\n if (t3 < 0) {\r\n t3++;\r\n }\r\n if (t3 > 1) {\r\n t3--;\r\n }\r\n if (6 * t3 < 1) {\r\n val = t1 + (t2 - t1) * 6 * t3;\r\n }\r\n else if (2 * t3 < 1) {\r\n val = t2;\r\n }\r\n else if (3 * t3 < 2) {\r\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\r\n }\r\n else {\r\n val = t1;\r\n }\r\n rgb[i] = val * 255;\r\n }\r\n return {\r\n r: Math.round(rgb[0]),\r\n g: Math.round(rgb[1]),\r\n b: Math.round(rgb[2]),\r\n a: 1,\r\n };\r\n }\r\n },\r\n /**\r\n * check intersection of two client rectangles\r\n * @method\r\n * @memberof Konva.Util\r\n * @param {Object} r1 - { x, y, width, height } client rectangle\r\n * @param {Object} r2 - { x, y, width, height } client rectangle\r\n * @example\r\n * const overlapping = Konva.Util.haveIntersection(shape1.getClientRect(), shape2.getClientRect());\r\n */\r\n haveIntersection: function (r1, r2) {\r\n return !(r2.x > r1.x + r1.width ||\r\n r2.x + r2.width < r1.x ||\r\n r2.y > r1.y + r1.height ||\r\n r2.y + r2.height < r1.y);\r\n },\r\n cloneObject: function (obj) {\r\n var retObj = {};\r\n for (var key in obj) {\r\n if (this._isPlainObject(obj[key])) {\r\n retObj[key] = this.cloneObject(obj[key]);\r\n }\r\n else if (this._isArray(obj[key])) {\r\n retObj[key] = this.cloneArray(obj[key]);\r\n }\r\n else {\r\n retObj[key] = obj[key];\r\n }\r\n }\r\n return retObj;\r\n },\r\n cloneArray: function (arr) {\r\n return arr.slice(0);\r\n },\r\n _degToRad: function (deg) {\r\n return deg * PI_OVER_DEG180;\r\n },\r\n _radToDeg: function (rad) {\r\n return rad * DEG180_OVER_PI;\r\n },\r\n _getRotation: function (radians) {\r\n return Konva.angleDeg ? Util._radToDeg(radians) : radians;\r\n },\r\n _capitalize: function (str) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n },\r\n throw: function (str) {\r\n throw new Error(KONVA_ERROR + str);\r\n },\r\n error: function (str) {\r\n console.error(KONVA_ERROR + str);\r\n },\r\n warn: function (str) {\r\n if (!Konva.showWarnings) {\r\n return;\r\n }\r\n console.warn(KONVA_WARNING + str);\r\n },\r\n extend: function (child, parent) {\r\n function Ctor() {\r\n this.constructor = child;\r\n }\r\n Ctor.prototype = parent.prototype;\r\n var oldProto = child.prototype;\r\n child.prototype = new Ctor();\r\n for (var key in oldProto) {\r\n if (oldProto.hasOwnProperty(key)) {\r\n child.prototype[key] = oldProto[key];\r\n }\r\n }\r\n child.__super__ = parent.prototype;\r\n // create reference to parent\r\n child.super = parent;\r\n },\r\n _getControlPoints: function (x0, y0, x1, y1, x2, y2, t) {\r\n var d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\r\n return [p1x, p1y, p2x, p2y];\r\n },\r\n _expandPoints: function (p, tension) {\r\n var len = p.length, allPoints = [], n, cp;\r\n for (n = 2; n < len - 2; n += 2) {\r\n cp = Util._getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\r\n allPoints.push(cp[0]);\r\n allPoints.push(cp[1]);\r\n allPoints.push(p[n]);\r\n allPoints.push(p[n + 1]);\r\n allPoints.push(cp[2]);\r\n allPoints.push(cp[3]);\r\n }\r\n return allPoints;\r\n },\r\n each: function (obj, func) {\r\n for (var key in obj) {\r\n func(key, obj[key]);\r\n }\r\n },\r\n _inRange: function (val, left, right) {\r\n return left <= val && val < right;\r\n },\r\n _getProjectionToSegment: function (x1, y1, x2, y2, x3, y3) {\r\n var x, y, dist;\r\n var pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\r\n if (pd2 == 0) {\r\n x = x1;\r\n y = y1;\r\n dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\r\n }\r\n else {\r\n var u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\r\n if (u < 0) {\r\n x = x1;\r\n y = y1;\r\n dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\r\n }\r\n else if (u > 1.0) {\r\n x = x2;\r\n y = y2;\r\n dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\r\n }\r\n else {\r\n x = x1 + u * (x2 - x1);\r\n y = y1 + u * (y2 - y1);\r\n dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\r\n }\r\n }\r\n return [x, y, dist];\r\n },\r\n // line as array of points.\r\n // line might be closed\r\n _getProjectionToLine: function (pt, line, isClosed) {\r\n var pc = Util.cloneObject(pt);\r\n var dist = Number.MAX_VALUE;\r\n line.forEach(function (p1, i) {\r\n if (!isClosed && i === line.length - 1) {\r\n return;\r\n }\r\n var p2 = line[(i + 1) % line.length];\r\n var proj = Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\r\n var px = proj[0], py = proj[1], pdist = proj[2];\r\n if (pdist < dist) {\r\n pc.x = px;\r\n pc.y = py;\r\n dist = pdist;\r\n }\r\n });\r\n return pc;\r\n },\r\n _prepareArrayForTween: function (startArray, endArray, isClosed) {\r\n var n, start = [], end = [];\r\n if (startArray.length > endArray.length) {\r\n var temp = endArray;\r\n endArray = startArray;\r\n startArray = temp;\r\n }\r\n for (n = 0; n < startArray.length; n += 2) {\r\n start.push({\r\n x: startArray[n],\r\n y: startArray[n + 1],\r\n });\r\n }\r\n for (n = 0; n < endArray.length; n += 2) {\r\n end.push({\r\n x: endArray[n],\r\n y: endArray[n + 1],\r\n });\r\n }\r\n var newStart = [];\r\n end.forEach(function (point) {\r\n var pr = Util._getProjectionToLine(point, start, isClosed);\r\n newStart.push(pr.x);\r\n newStart.push(pr.y);\r\n });\r\n return newStart;\r\n },\r\n _prepareToStringify: function (obj) {\r\n var desc;\r\n obj.visitedByCircularReferenceRemoval = true;\r\n for (var key in obj) {\r\n if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\r\n continue;\r\n }\r\n desc = Object.getOwnPropertyDescriptor(obj, key);\r\n if (obj[key].visitedByCircularReferenceRemoval ||\r\n Util._isElement(obj[key])) {\r\n if (desc.configurable) {\r\n delete obj[key];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else if (Util._prepareToStringify(obj[key]) === null) {\r\n if (desc.configurable) {\r\n delete obj[key];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n }\r\n delete obj.visitedByCircularReferenceRemoval;\r\n return obj;\r\n },\r\n // very simplified version of Object.assign\r\n _assign: function (target, source) {\r\n for (var key in source) {\r\n target[key] = source[key];\r\n }\r\n return target;\r\n },\r\n _getFirstPointerId: function (evt) {\r\n if (!evt.touches) {\r\n // fake id for mouse\r\n return 999;\r\n }\r\n else {\r\n return evt.changedTouches[0].identifier;\r\n }\r\n },\r\n };\n\n function _formatValue(val) {\r\n if (Util._isString(val)) {\r\n return '\"' + val + '\"';\r\n }\r\n if (Object.prototype.toString.call(val) === '[object Number]') {\r\n return val;\r\n }\r\n if (Util._isBoolean(val)) {\r\n return val;\r\n }\r\n return Object.prototype.toString.call(val);\r\n }\r\n function RGBComponent(val) {\r\n if (val > 255) {\r\n return 255;\r\n }\r\n else if (val < 0) {\r\n return 0;\r\n }\r\n return Math.round(val);\r\n }\r\n function getNumberValidator() {\r\n if (Konva.isUnminified) {\r\n return function (val, attr) {\r\n if (!Util._isNumber(val)) {\r\n Util.warn(_formatValue(val) +\r\n ' is a not valid value for \"' +\r\n attr +\r\n '\" attribute. The value should be a number.');\r\n }\r\n return val;\r\n };\r\n }\r\n }\r\n function getNumberOrAutoValidator() {\r\n if (Konva.isUnminified) {\r\n return function (val, attr) {\r\n var isNumber = Util._isNumber(val);\r\n var isAuto = val === 'auto';\r\n if (!(isNumber || isAuto)) {\r\n Util.warn(_formatValue(val) +\r\n ' is a not valid value for \"' +\r\n attr +\r\n '\" attribute. The value should be a number or \"auto\".');\r\n }\r\n return val;\r\n };\r\n }\r\n }\r\n function getStringValidator() {\r\n if (Konva.isUnminified) {\r\n return function (val, attr) {\r\n if (!Util._isString(val)) {\r\n Util.warn(_formatValue(val) +\r\n ' is a not valid value for \"' +\r\n attr +\r\n '\" attribute. The value should be a string.');\r\n }\r\n return val;\r\n };\r\n }\r\n }\r\n function getNumberArrayValidator() {\r\n if (Konva.isUnminified) {\r\n return function (val, attr) {\r\n if (!Util._isArray(val)) {\r\n Util.warn(_formatValue(val) +\r\n ' is a not valid value for \"' +\r\n attr +\r\n '\" attribute. The value should be a array of numbers.');\r\n }\r\n else {\r\n val.forEach(function (item) {\r\n if (!Util._isNumber(item)) {\r\n Util.warn('\"' +\r\n attr +\r\n '\" attribute has non numeric element ' +\r\n item +\r\n '. Make sure that all elements are numbers.');\r\n }\r\n });\r\n }\r\n return val;\r\n };\r\n }\r\n }\r\n function getBooleanValidator() {\r\n if (Konva.isUnminified) {\r\n return function (val, attr) {\r\n var isBool = val === true || val === false;\r\n if (!isBool) {\r\n Util.warn(_formatValue(val) +\r\n ' is a not valid value for \"' +\r\n attr +\r\n '\" attribute. The value should be a boolean.');\r\n }\r\n return val;\r\n };\r\n }\r\n }\r\n function getComponentValidator(components) {\r\n if (Konva.isUnminified) {\r\n return function (val, attr) {\r\n if (!Util.isObject(val)) {\r\n Util.warn(_formatValue(val) +\r\n ' is a not valid value for \"' +\r\n attr +\r\n '\" attribute. The value should be an object with properties ' +\r\n components);\r\n }\r\n return val;\r\n };\r\n }\r\n }\n\n var GET = 'get', SET = 'set';\r\n var Factory = {\r\n addGetterSetter: function (constructor, attr, def, validator, after) {\r\n Factory.addGetter(constructor, attr, def);\r\n Factory.addSetter(constructor, attr, validator, after);\r\n Factory.addOverloadedGetterSetter(constructor, attr);\r\n },\r\n addGetter: function (constructor, attr, def) {\r\n var method = GET + Util._capitalize(attr);\r\n constructor.prototype[method] =\r\n constructor.prototype[method] ||\r\n function () {\r\n var val = this.attrs[attr];\r\n return val === undefined ? def : val;\r\n };\r\n },\r\n addSetter: function (constructor, attr, validator, after) {\r\n var method = SET + Util._capitalize(attr);\r\n if (!constructor.prototype[method]) {\r\n Factory.overWriteSetter(constructor, attr, validator, after);\r\n }\r\n },\r\n overWriteSetter: function (constructor, attr, validator, after) {\r\n var method = SET + Util._capitalize(attr);\r\n constructor.prototype[method] = function (val) {\r\n if (validator && val !== undefined && val !== null) {\r\n val = validator.call(this, val, attr);\r\n }\r\n this._setAttr(attr, val);\r\n if (after) {\r\n after.call(this);\r\n }\r\n return this;\r\n };\r\n },\r\n addComponentsGetterSetter: function (constructor, attr, components, validator, after) {\r\n var len = components.length, capitalize = Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr), n, component;\r\n // getter\r\n constructor.prototype[getter] = function () {\r\n var ret = {};\r\n for (n = 0; n < len; n++) {\r\n component = components[n];\r\n ret[component] = this.getAttr(attr + capitalize(component));\r\n }\r\n return ret;\r\n };\r\n var basicValidator = getComponentValidator(components);\r\n // setter\r\n constructor.prototype[setter] = function (val) {\r\n var oldVal = this.attrs[attr], key;\r\n if (validator) {\r\n val = validator.call(this, val);\r\n }\r\n if (basicValidator) {\r\n basicValidator.call(this, val, attr);\r\n }\r\n for (key in val) {\r\n if (!val.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n this._setAttr(attr + capitalize(key), val[key]);\r\n }\r\n this._fireChangeEvent(attr, oldVal, val);\r\n if (after) {\r\n after.call(this);\r\n }\r\n return this;\r\n };\r\n Factory.addOverloadedGetterSetter(constructor, attr);\r\n },\r\n addOverloadedGetterSetter: function (constructor, attr) {\r\n var capitalizedAttr = Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\r\n constructor.prototype[attr] = function () {\r\n // setting\r\n if (arguments.length) {\r\n this[setter](arguments[0]);\r\n return this;\r\n }\r\n // getting\r\n return this[getter]();\r\n };\r\n },\r\n addDeprecatedGetterSetter: function (constructor, attr, def, validator) {\r\n Util.error('Adding deprecated ' + attr);\r\n var method = GET + Util._capitalize(attr);\r\n var message = attr +\r\n ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\r\n constructor.prototype[method] = function () {\r\n Util.error(message);\r\n var val = this.attrs[attr];\r\n return val === undefined ? def : val;\r\n };\r\n Factory.addSetter(constructor, attr, validator, function () {\r\n Util.error(message);\r\n });\r\n Factory.addOverloadedGetterSetter(constructor, attr);\r\n },\r\n backCompat: function (constructor, methods) {\r\n Util.each(methods, function (oldMethodName, newMethodName) {\r\n var method = constructor.prototype[newMethodName];\r\n var oldGetter = GET + Util._capitalize(oldMethodName);\r\n var oldSetter = SET + Util._capitalize(oldMethodName);\r\n function deprecated() {\r\n method.apply(this, arguments);\r\n Util.error('\"' +\r\n oldMethodName +\r\n '\" method is deprecated and will be removed soon. Use \"\"' +\r\n newMethodName +\r\n '\" instead.');\r\n }\r\n constructor.prototype[oldMethodName] = deprecated;\r\n constructor.prototype[oldGetter] = deprecated;\r\n constructor.prototype[oldSetter] = deprecated;\r\n });\r\n },\r\n afterSetFilter: function () {\r\n this._filterUpToDate = false;\r\n },\r\n };\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n }\n\n var COMMA = ',', OPEN_PAREN = '(', CLOSE_PAREN = ')', OPEN_PAREN_BRACKET = '([', CLOSE_BRACKET_PAREN = '])', SEMICOLON = ';', DOUBLE_PAREN = '()', \r\n // EMPTY_STRING = '',\r\n EQUALS = '=', \r\n // SET = 'set',\r\n CONTEXT_METHODS = [\r\n 'arc',\r\n 'arcTo',\r\n 'beginPath',\r\n 'bezierCurveTo',\r\n 'clearRect',\r\n 'clip',\r\n 'closePath',\r\n 'createLinearGradient',\r\n 'createPattern',\r\n 'createRadialGradient',\r\n 'drawImage',\r\n 'ellipse',\r\n 'fill',\r\n 'fillText',\r\n 'getImageData',\r\n 'createImageData',\r\n 'lineTo',\r\n 'moveTo',\r\n 'putImageData',\r\n 'quadraticCurveTo',\r\n 'rect',\r\n 'restore',\r\n 'rotate',\r\n 'save',\r\n 'scale',\r\n 'setLineDash',\r\n 'setTransform',\r\n 'stroke',\r\n 'strokeText',\r\n 'transform',\r\n 'translate',\r\n ];\r\n var CONTEXT_PROPERTIES = [\r\n 'fillStyle',\r\n 'strokeStyle',\r\n 'shadowColor',\r\n 'shadowBlur',\r\n 'shadowOffsetX',\r\n 'shadowOffsetY',\r\n 'lineCap',\r\n 'lineDashOffset',\r\n 'lineJoin',\r\n 'lineWidth',\r\n 'miterLimit',\r\n 'font',\r\n 'textAlign',\r\n 'textBaseline',\r\n 'globalAlpha',\r\n 'globalCompositeOperation',\r\n 'imageSmoothingEnabled',\r\n ];\r\n var traceArrMax = 100;\r\n /**\r\n * Konva wrapper around native 2d canvas context. It has almost the same API of 2d context with some additional functions.\r\n * With core Konva shapes you don't need to use this object. But you will use it if you want to create\r\n * a [custom shape](/docs/react/Custom_Shape.html) or a [custom hit regions](/docs/events/Custom_Hit_Region.html).\r\n * For full information about each 2d context API use [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D)\r\n * @constructor\r\n * @memberof Konva\r\n * @example\r\n * const rect = new Konva.Shape({\r\n * fill: 'red',\r\n * width: 100,\r\n * height: 100,\r\n * sceneFunc: (ctx, shape) => {\r\n * // ctx - is context wrapper\r\n * // shape - is instance of Konva.Shape, so it equals to \"rect\" variable\r\n * ctx.rect(0, 0, shape.getAttr('width'), shape.getAttr('height'));\r\n *\r\n * // automatically fill shape from props and draw hit region\r\n * ctx.fillStrokeShape(shape);\r\n * }\r\n * })\r\n */\r\n var Context = /** @class */ (function () {\r\n function Context(canvas) {\r\n this.canvas = canvas;\r\n this._context = canvas._canvas.getContext('2d');\r\n if (Konva.enableTrace) {\r\n this.traceArr = [];\r\n this._enableTrace();\r\n }\r\n }\r\n /**\r\n * fill shape\r\n * @method\r\n * @name Konva.Context#fillShape\r\n * @param {Konva.Shape} shape\r\n */\r\n Context.prototype.fillShape = function (shape) {\r\n if (shape.fillEnabled()) {\r\n this._fill(shape);\r\n }\r\n };\r\n Context.prototype._fill = function (shape) {\r\n // abstract\r\n };\r\n /**\r\n * stroke shape\r\n * @method\r\n * @name Konva.Context#strokeShape\r\n * @param {Konva.Shape} shape\r\n */\r\n Context.prototype.strokeShape = function (shape) {\r\n if (shape.hasStroke()) {\r\n this._stroke(shape);\r\n }\r\n };\r\n Context.prototype._stroke = function (shape) {\r\n // abstract\r\n };\r\n /**\r\n * fill then stroke\r\n * @method\r\n * @name Konva.Context#fillStrokeShape\r\n * @param {Konva.Shape} shape\r\n */\r\n Context.prototype.fillStrokeShape = function (shape) {\r\n this.fillShape(shape);\r\n this.strokeShape(shape);\r\n };\r\n Context.prototype.getTrace = function (relaxed) {\r\n var traceArr = this.traceArr, len = traceArr.length, str = '', n, trace, method, args;\r\n for (n = 0; n < len; n++) {\r\n trace = traceArr[n];\r\n method = trace.method;\r\n // methods\r\n if (method) {\r\n args = trace.args;\r\n str += method;\r\n if (relaxed) {\r\n str += DOUBLE_PAREN;\r\n }\r\n else {\r\n if (Util._isArray(args[0])) {\r\n str += OPEN_PAREN_BRACKET + args.join(COMMA) + CLOSE_BRACKET_PAREN;\r\n }\r\n else {\r\n str += OPEN_PAREN + args.join(COMMA) + CLOSE_PAREN;\r\n }\r\n }\r\n }\r\n else {\r\n // properties\r\n str += trace.property;\r\n if (!relaxed) {\r\n str += EQUALS + trace.val;\r\n }\r\n }\r\n str += SEMICOLON;\r\n }\r\n return str;\r\n };\r\n Context.prototype.clearTrace = function () {\r\n this.traceArr = [];\r\n };\r\n Context.prototype._trace = function (str) {\r\n var traceArr = this.traceArr, len;\r\n traceArr.push(str);\r\n len = traceArr.length;\r\n if (len >= traceArrMax) {\r\n traceArr.shift();\r\n }\r\n };\r\n /**\r\n * reset canvas context transform\r\n * @method\r\n * @name Konva.Context#reset\r\n */\r\n Context.prototype.reset = function () {\r\n var pixelRatio = this.getCanvas().getPixelRatio();\r\n this.setTransform(1 * pixelRatio, 0, 0, 1 * pixelRatio, 0, 0);\r\n };\r\n /**\r\n * get canvas wrapper\r\n * @method\r\n * @name Konva.Context#getCanvas\r\n * @returns {Konva.Canvas}\r\n */\r\n Context.prototype.getCanvas = function () {\r\n return this.canvas;\r\n };\r\n /**\r\n * clear canvas\r\n * @method\r\n * @name Konva.Context#clear\r\n * @param {Object} [bounds]\r\n * @param {Number} [bounds.x]\r\n * @param {Number} [bounds.y]\r\n * @param {Number} [bounds.width]\r\n * @param {Number} [bounds.height]\r\n */\r\n Context.prototype.clear = function (bounds) {\r\n var canvas = this.getCanvas();\r\n if (bounds) {\r\n this.clearRect(bounds.x || 0, bounds.y || 0, bounds.width || 0, bounds.height || 0);\r\n }\r\n else {\r\n this.clearRect(0, 0, canvas.getWidth() / canvas.pixelRatio, canvas.getHeight() / canvas.pixelRatio);\r\n }\r\n };\r\n Context.prototype._applyLineCap = function (shape) {\r\n var lineCap = shape.getLineCap();\r\n if (lineCap) {\r\n this.setAttr('lineCap', lineCap);\r\n }\r\n };\r\n Context.prototype._applyOpacity = function (shape) {\r\n var absOpacity = shape.getAbsoluteOpacity();\r\n if (absOpacity !== 1) {\r\n this.setAttr('globalAlpha', absOpacity);\r\n }\r\n };\r\n Context.prototype._applyLineJoin = function (shape) {\r\n var lineJoin = shape.attrs.lineJoin;\r\n if (lineJoin) {\r\n this.setAttr('lineJoin', lineJoin);\r\n }\r\n };\r\n Context.prototype.setAttr = function (attr, val) {\r\n this._context[attr] = val;\r\n };\r\n /**\r\n * arc function.\r\n * @method\r\n * @name Konva.Context#arc\r\n */\r\n Context.prototype.arc = function (a0, a1, a2, a3, a4, a5) {\r\n this._context.arc(a0, a1, a2, a3, a4, a5);\r\n };\r\n /**\r\n * arcTo function.\r\n * @method\r\n * @name Konva.Context#arcTo\r\n */\r\n Context.prototype.arcTo = function (a0, a1, a2, a3, a4) {\r\n this._context.arcTo(a0, a1, a2, a3, a4);\r\n };\r\n /**\r\n * beginPath function.\r\n * @method\r\n * @name Konva.Context#beginPath\r\n */\r\n Context.prototype.beginPath = function () {\r\n this._context.beginPath();\r\n };\r\n /**\r\n * bezierCurveTo function.\r\n * @method\r\n * @name Konva.Context#bezierCurveTo\r\n */\r\n Context.prototype.bezierCurveTo = function (a0, a1, a2, a3, a4, a5) {\r\n this._context.bezierCurveTo(a0, a1, a2, a3, a4, a5);\r\n };\r\n /**\r\n * clearRect function.\r\n * @method\r\n * @name Konva.Context#clearRect\r\n */\r\n Context.prototype.clearRect = function (a0, a1, a2, a3) {\r\n this._context.clearRect(a0, a1, a2, a3);\r\n };\r\n /**\r\n * clip function.\r\n * @method\r\n * @name Konva.Context#clip\r\n */\r\n Context.prototype.clip = function () {\r\n this._context.clip();\r\n };\r\n /**\r\n * closePath function.\r\n * @method\r\n * @name Konva.Context#closePath\r\n */\r\n Context.prototype.closePath = function () {\r\n this._context.closePath();\r\n };\r\n /**\r\n * createImageData function.\r\n * @method\r\n * @name Konva.Context#createImageData\r\n */\r\n Context.prototype.createImageData = function (a0, a1) {\r\n var a = arguments;\r\n if (a.length === 2) {\r\n return this._context.createImageData(a0, a1);\r\n }\r\n else if (a.length === 1) {\r\n return this._context.createImageData(a0);\r\n }\r\n };\r\n /**\r\n * createLinearGradient function.\r\n * @method\r\n * @name Konva.Context#createLinearGradient\r\n */\r\n Context.prototype.createLinearGradient = function (a0, a1, a2, a3) {\r\n return this._context.createLinearGradient(a0, a1, a2, a3);\r\n };\r\n /**\r\n * createPattern function.\r\n * @method\r\n * @name Konva.Context#createPattern\r\n */\r\n Context.prototype.createPattern = function (a0, a1) {\r\n return this._context.createPattern(a0, a1);\r\n };\r\n /**\r\n * createRadialGradient function.\r\n * @method\r\n * @name Konva.Context#createRadialGradient\r\n */\r\n Context.prototype.createRadialGradient = function (a0, a1, a2, a3, a4, a5) {\r\n return this._context.createRadialGradient(a0, a1, a2, a3, a4, a5);\r\n };\r\n /**\r\n * drawImage function.\r\n * @method\r\n * @name Konva.Context#drawImage\r\n */\r\n Context.prototype.drawImage = function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\r\n var a = arguments, _context = this._context;\r\n if (a.length === 3) {\r\n _context.drawImage(a0, a1, a2);\r\n }\r\n else if (a.length === 5) {\r\n _context.drawImage(a0, a1, a2, a3, a4);\r\n }\r\n else if (a.length === 9) {\r\n _context.drawImage(a0, a1, a2, a3, a4, a5, a6, a7, a8);\r\n }\r\n };\r\n /**\r\n * ellipse function.\r\n * @method\r\n * @name Konva.Context#ellipse\r\n */\r\n Context.prototype.ellipse = function (a0, a1, a2, a3, a4, a5, a6, a7) {\r\n this._context.ellipse(a0, a1, a2, a3, a4, a5, a6, a7);\r\n };\r\n /**\r\n * isPointInPath function.\r\n * @method\r\n * @name Konva.Context#isPointInPath\r\n */\r\n Context.prototype.isPointInPath = function (x, y) {\r\n return this._context.isPointInPath(x, y);\r\n };\r\n /**\r\n * fill function.\r\n * @method\r\n * @name Konva.Context#fill\r\n */\r\n Context.prototype.fill = function () {\r\n this._context.fill();\r\n };\r\n /**\r\n * fillRect function.\r\n * @method\r\n * @name Konva.Context#fillRect\r\n */\r\n Context.prototype.fillRect = function (x, y, width, height) {\r\n this._context.fillRect(x, y, width, height);\r\n };\r\n /**\r\n * strokeRect function.\r\n * @method\r\n * @name Konva.Context#strokeRect\r\n */\r\n Context.prototype.strokeRect = function (x, y, width, height) {\r\n this._context.strokeRect(x, y, width, height);\r\n };\r\n /**\r\n * fillText function.\r\n * @method\r\n * @name Konva.Context#fillText\r\n */\r\n Context.prototype.fillText = function (a0, a1, a2) {\r\n this._context.fillText(a0, a1, a2);\r\n };\r\n /**\r\n * measureText function.\r\n * @method\r\n * @name Konva.Context#measureText\r\n */\r\n Context.prototype.measureText = function (text) {\r\n return this._context.measureText(text);\r\n };\r\n /**\r\n * getImageData function.\r\n * @method\r\n * @name Konva.Context#getImageData\r\n */\r\n Context.prototype.getImageData = function (a0, a1, a2, a3) {\r\n return this._context.getImageData(a0, a1, a2, a3);\r\n };\r\n /**\r\n * lineTo function.\r\n * @method\r\n * @name Konva.Context#lineTo\r\n */\r\n Context.prototype.lineTo = function (a0, a1) {\r\n this._context.lineTo(a0, a1);\r\n };\r\n /**\r\n * moveTo function.\r\n * @method\r\n * @name Konva.Context#moveTo\r\n */\r\n Context.prototype.moveTo = function (a0, a1) {\r\n this._context.moveTo(a0, a1);\r\n };\r\n /**\r\n * rect function.\r\n * @method\r\n * @name Konva.Context#rect\r\n */\r\n Context.prototype.rect = function (a0, a1, a2, a3) {\r\n this._context.rect(a0, a1, a2, a3);\r\n };\r\n /**\r\n * putImageData function.\r\n * @method\r\n * @name Konva.Context#putImageData\r\n */\r\n Context.prototype.putImageData = function (a0, a1, a2) {\r\n this._context.putImageData(a0, a1, a2);\r\n };\r\n /**\r\n * quadraticCurveTo function.\r\n * @method\r\n * @name Konva.Context#quadraticCurveTo\r\n */\r\n Context.prototype.quadraticCurveTo = function (a0, a1, a2, a3) {\r\n this._context.quadraticCurveTo(a0, a1, a2, a3);\r\n };\r\n /**\r\n * restore function.\r\n * @method\r\n * @name Konva.Context#restore\r\n */\r\n Context.prototype.restore = function () {\r\n this._context.restore();\r\n };\r\n /**\r\n * rotate function.\r\n * @method\r\n * @name Konva.Context#rotate\r\n */\r\n Context.prototype.rotate = function (a0) {\r\n this._context.rotate(a0);\r\n };\r\n /**\r\n * save function.\r\n * @method\r\n * @name Konva.Context#save\r\n */\r\n Context.prototype.save = function () {\r\n this._context.save();\r\n };\r\n /**\r\n * scale function.\r\n * @method\r\n * @name Konva.Context#scale\r\n */\r\n Context.prototype.scale = function (a0, a1) {\r\n this._context.scale(a0, a1);\r\n };\r\n /**\r\n * setLineDash function.\r\n * @method\r\n * @name Konva.Context#setLineDash\r\n */\r\n Context.prototype.setLineDash = function (a0) {\r\n // works for Chrome and IE11\r\n if (this._context.setLineDash) {\r\n this._context.setLineDash(a0);\r\n }\r\n else if ('mozDash' in this._context) {\r\n // verified that this works in firefox\r\n this._context['mozDash'] = a0;\r\n }\r\n else if ('webkitLineDash' in this._context) {\r\n // does not currently work for Safari\r\n this._context['webkitLineDash'] = a0;\r\n }\r\n // no support for IE9 and IE10\r\n };\r\n /**\r\n * getLineDash function.\r\n * @method\r\n * @name Konva.Context#getLineDash\r\n */\r\n Context.prototype.getLineDash = function () {\r\n return this._context.getLineDash();\r\n };\r\n /**\r\n * setTransform function.\r\n * @method\r\n * @name Konva.Context#setTransform\r\n */\r\n Context.prototype.setTransform = function (a0, a1, a2, a3, a4, a5) {\r\n this._context.setTransform(a0, a1, a2, a3, a4, a5);\r\n };\r\n /**\r\n * stroke function.\r\n * @method\r\n * @name Konva.Context#stroke\r\n */\r\n Context.prototype.stroke = function () {\r\n this._context.stroke();\r\n };\r\n /**\r\n * strokeText function.\r\n * @method\r\n * @name Konva.Context#strokeText\r\n */\r\n Context.prototype.strokeText = function (a0, a1, a2, a3) {\r\n this._context.strokeText(a0, a1, a2, a3);\r\n };\r\n /**\r\n * transform function.\r\n * @method\r\n * @name Konva.Context#transform\r\n */\r\n Context.prototype.transform = function (a0, a1, a2, a3, a4, a5) {\r\n this._context.transform(a0, a1, a2, a3, a4, a5);\r\n };\r\n /**\r\n * translate function.\r\n * @method\r\n * @name Konva.Context#translate\r\n */\r\n Context.prototype.translate = function (a0, a1) {\r\n this._context.translate(a0, a1);\r\n };\r\n Context.prototype._enableTrace = function () {\r\n var that = this, len = CONTEXT_METHODS.length, _simplifyArray = Util._simplifyArray, origSetter = this.setAttr, n, args;\r\n // to prevent creating scope function at each loop\r\n var func = function (methodName) {\r\n var origMethod = that[methodName], ret;\r\n that[methodName] = function () {\r\n args = _simplifyArray(Array.prototype.slice.call(arguments, 0));\r\n ret = origMethod.apply(that, arguments);\r\n that._trace({\r\n method: methodName,\r\n args: args,\r\n });\r\n return ret;\r\n };\r\n };\r\n // methods\r\n for (n = 0; n < len; n++) {\r\n func(CONTEXT_METHODS[n]);\r\n }\r\n // attrs\r\n that.setAttr = function () {\r\n origSetter.apply(that, arguments);\r\n var prop = arguments[0];\r\n var val = arguments[1];\r\n if (prop === 'shadowOffsetX' ||\r\n prop === 'shadowOffsetY' ||\r\n prop === 'shadowBlur') {\r\n val = val / this.canvas.getPixelRatio();\r\n }\r\n that._trace({\r\n property: prop,\r\n val: val,\r\n });\r\n };\r\n };\r\n Context.prototype._applyGlobalCompositeOperation = function (node) {\r\n var globalCompositeOperation = node.getGlobalCompositeOperation();\r\n if (globalCompositeOperation !== 'source-over') {\r\n this.setAttr('globalCompositeOperation', globalCompositeOperation);\r\n }\r\n };\r\n return Context;\r\n }());\r\n CONTEXT_PROPERTIES.forEach(function (prop) {\r\n Object.defineProperty(Context.prototype, prop, {\r\n get: function () {\r\n return this._context[prop];\r\n },\r\n set: function (val) {\r\n this._context[prop] = val;\r\n },\r\n });\r\n });\r\n var SceneContext = /** @class */ (function (_super) {\r\n __extends(SceneContext, _super);\r\n function SceneContext() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SceneContext.prototype._fillColor = function (shape) {\r\n var fill = shape.fill();\r\n this.setAttr('fillStyle', fill);\r\n shape._fillFunc(this);\r\n };\r\n SceneContext.prototype._fillPattern = function (shape) {\r\n var fillPatternX = shape.getFillPatternX(), fillPatternY = shape.getFillPatternY(), fillPatternRotation = Konva.getAngle(shape.getFillPatternRotation()), fillPatternOffsetX = shape.getFillPatternOffsetX(), fillPatternOffsetY = shape.getFillPatternOffsetY(), fillPatternScaleX = shape.getFillPatternScaleX(), fillPatternScaleY = shape.getFillPatternScaleY();\r\n if (fillPatternX || fillPatternY) {\r\n this.translate(fillPatternX || 0, fillPatternY || 0);\r\n }\r\n if (fillPatternRotation) {\r\n this.rotate(fillPatternRotation);\r\n }\r\n if (fillPatternScaleX || fillPatternScaleY) {\r\n this.scale(fillPatternScaleX, fillPatternScaleY);\r\n }\r\n if (fillPatternOffsetX || fillPatternOffsetY) {\r\n this.translate(-1 * fillPatternOffsetX, -1 * fillPatternOffsetY);\r\n }\r\n this.setAttr('fillStyle', shape._getFillPattern());\r\n shape._fillFunc(this);\r\n };\r\n SceneContext.prototype._fillLinearGradient = function (shape) {\r\n var grd = shape._getLinearGradient();\r\n if (grd) {\r\n this.setAttr('fillStyle', grd);\r\n shape._fillFunc(this);\r\n }\r\n };\r\n SceneContext.prototype._fillRadialGradient = function (shape) {\r\n var grd = shape._getRadialGradient();\r\n if (grd) {\r\n this.setAttr('fillStyle', grd);\r\n shape._fillFunc(this);\r\n }\r\n };\r\n SceneContext.prototype._fill = function (shape) {\r\n var hasColor = shape.fill(), fillPriority = shape.getFillPriority();\r\n // priority fills\r\n if (hasColor && fillPriority === 'color') {\r\n this._fillColor(shape);\r\n return;\r\n }\r\n var hasPattern = shape.getFillPatternImage();\r\n if (hasPattern && fillPriority === 'pattern') {\r\n this._fillPattern(shape);\r\n return;\r\n }\r\n var hasLinearGradient = shape.getFillLinearGradientColorStops();\r\n if (hasLinearGradient && fillPriority === 'linear-gradient') {\r\n this._fillLinearGradient(shape);\r\n return;\r\n }\r\n var hasRadialGradient = shape.getFillRadialGradientColorStops();\r\n if (hasRadialGradient && fillPriority === 'radial-gradient') {\r\n this._fillRadialGradient(shape);\r\n return;\r\n }\r\n // now just try and fill with whatever is available\r\n if (hasColor) {\r\n this._fillColor(shape);\r\n }\r\n else if (hasPattern) {\r\n this._fillPattern(shape);\r\n }\r\n else if (hasLinearGradient) {\r\n this._fillLinearGradient(shape);\r\n }\r\n else if (hasRadialGradient) {\r\n this._fillRadialGradient(shape);\r\n }\r\n };\r\n SceneContext.prototype._strokeLinearGradient = function (shape) {\r\n var start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\r\n if (colorStops) {\r\n // build color stops\r\n for (var n = 0; n < colorStops.length; n += 2) {\r\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\r\n }\r\n this.setAttr('strokeStyle', grd);\r\n }\r\n };\r\n SceneContext.prototype._stroke = function (shape) {\r\n var dash = shape.dash(), \r\n // ignore strokeScaleEnabled for Text\r\n strokeScaleEnabled = shape.getStrokeScaleEnabled();\r\n if (shape.hasStroke()) {\r\n if (!strokeScaleEnabled) {\r\n this.save();\r\n var pixelRatio = this.getCanvas().getPixelRatio();\r\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\r\n }\r\n this._applyLineCap(shape);\r\n if (dash && shape.dashEnabled()) {\r\n this.setLineDash(dash);\r\n this.setAttr('lineDashOffset', shape.dashOffset());\r\n }\r\n this.setAttr('lineWidth', shape.strokeWidth());\r\n if (!shape.getShadowForStrokeEnabled()) {\r\n this.setAttr('shadowColor', 'rgba(0,0,0,0)');\r\n }\r\n var hasLinearGradient = shape.getStrokeLinearGradientColorStops();\r\n if (hasLinearGradient) {\r\n this._strokeLinearGradient(shape);\r\n }\r\n else {\r\n this.setAttr('strokeStyle', shape.stroke());\r\n }\r\n shape._strokeFunc(this);\r\n if (!strokeScaleEnabled) {\r\n this.restore();\r\n }\r\n }\r\n };\r\n SceneContext.prototype._applyShadow = function (shape) {\r\n var util = Util, color = util.get(shape.getShadowRGBA(), 'black'), blur = util.get(shape.getShadowBlur(), 5), offset = util.get(shape.getShadowOffset(), {\r\n x: 0,\r\n y: 0,\r\n }), scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\r\n this.setAttr('shadowColor', color);\r\n this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\r\n this.setAttr('shadowOffsetX', offset.x * scaleX);\r\n this.setAttr('shadowOffsetY', offset.y * scaleY);\r\n };\r\n return SceneContext;\r\n }(Context));\r\n var HitContext = /** @class */ (function (_super) {\r\n __extends(HitContext, _super);\r\n function HitContext() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n HitContext.prototype._fill = function (shape) {\r\n this.save();\r\n this.setAttr('fillStyle', shape.colorKey);\r\n shape._fillFuncHit(this);\r\n this.restore();\r\n };\r\n HitContext.prototype.strokeShape = function (shape) {\r\n if (shape.hasHitStroke()) {\r\n this._stroke(shape);\r\n }\r\n };\r\n HitContext.prototype._stroke = function (shape) {\r\n if (shape.hasHitStroke()) {\r\n // ignore strokeScaleEnabled for Text\r\n var strokeScaleEnabled = shape.getStrokeScaleEnabled();\r\n if (!strokeScaleEnabled) {\r\n this.save();\r\n var pixelRatio = this.getCanvas().getPixelRatio();\r\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\r\n }\r\n this._applyLineCap(shape);\r\n var hitStrokeWidth = shape.hitStrokeWidth();\r\n var strokeWidth = hitStrokeWidth === 'auto' ? shape.strokeWidth() : hitStrokeWidth;\r\n this.setAttr('lineWidth', strokeWidth);\r\n this.setAttr('strokeStyle', shape.colorKey);\r\n shape._strokeFuncHit(this);\r\n if (!strokeScaleEnabled) {\r\n this.restore();\r\n }\r\n }\r\n };\r\n return HitContext;\r\n }(Context));\n\n // calculate pixel ratio\r\n var _pixelRatio;\r\n function getDevicePixelRatio() {\r\n if (_pixelRatio) {\r\n return _pixelRatio;\r\n }\r\n var canvas = Util.createCanvasElement();\r\n var context = canvas.getContext('2d');\r\n _pixelRatio = (function () {\r\n var devicePixelRatio = Konva._global.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio ||\r\n context.mozBackingStorePixelRatio ||\r\n context.msBackingStorePixelRatio ||\r\n context.oBackingStorePixelRatio ||\r\n context.backingStorePixelRatio ||\r\n 1;\r\n return devicePixelRatio / backingStoreRatio;\r\n })();\r\n return _pixelRatio;\r\n }\r\n /**\r\n * Canvas Renderer constructor. It is a wrapper around native canvas element.\r\n * Usually you don't need to use it manually.\r\n * @constructor\r\n * @abstract\r\n * @memberof Konva\r\n * @param {Object} config\r\n * @param {Number} config.width\r\n * @param {Number} config.height\r\n * @param {Number} config.pixelRatio\r\n */\r\n var Canvas = /** @class */ (function () {\r\n function Canvas(config) {\r\n this.pixelRatio = 1;\r\n this.width = 0;\r\n this.height = 0;\r\n this.isCache = false;\r\n var conf = config || {};\r\n var pixelRatio = conf.pixelRatio || Konva.pixelRatio || getDevicePixelRatio();\r\n this.pixelRatio = pixelRatio;\r\n this._canvas = Util.createCanvasElement();\r\n // set inline styles\r\n this._canvas.style.padding = '0';\r\n this._canvas.style.margin = '0';\r\n this._canvas.style.border = '0';\r\n this._canvas.style.background = 'transparent';\r\n this._canvas.style.position = 'absolute';\r\n this._canvas.style.top = '0';\r\n this._canvas.style.left = '0';\r\n }\r\n /**\r\n * get canvas context\r\n * @method\r\n * @name Konva.Canvas#getContext\r\n * @returns {CanvasContext} context\r\n */\r\n Canvas.prototype.getContext = function () {\r\n return this.context;\r\n };\r\n Canvas.prototype.getPixelRatio = function () {\r\n return this.pixelRatio;\r\n };\r\n Canvas.prototype.setPixelRatio = function (pixelRatio) {\r\n var previousRatio = this.pixelRatio;\r\n this.pixelRatio = pixelRatio;\r\n this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\r\n };\r\n Canvas.prototype.setWidth = function (width) {\r\n // take into account pixel ratio\r\n this.width = this._canvas.width = width * this.pixelRatio;\r\n this._canvas.style.width = width + 'px';\r\n var pixelRatio = this.pixelRatio, _context = this.getContext()._context;\r\n _context.scale(pixelRatio, pixelRatio);\r\n };\r\n Canvas.prototype.setHeight = function (height) {\r\n // take into account pixel ratio\r\n this.height = this._canvas.height = height * this.pixelRatio;\r\n this._canvas.style.height = height + 'px';\r\n var pixelRatio = this.pixelRatio, _context = this.getContext()._context;\r\n _context.scale(pixelRatio, pixelRatio);\r\n };\r\n Canvas.prototype.getWidth = function () {\r\n return this.width;\r\n };\r\n Canvas.prototype.getHeight = function () {\r\n return this.height;\r\n };\r\n Canvas.prototype.setSize = function (width, height) {\r\n this.setWidth(width || 0);\r\n this.setHeight(height || 0);\r\n };\r\n /**\r\n * to data url\r\n * @method\r\n * @name Konva.Canvas#toDataURL\r\n * @param {String} mimeType\r\n * @param {Number} quality between 0 and 1 for jpg mime types\r\n * @returns {String} data url string\r\n */\r\n Canvas.prototype.toDataURL = function (mimeType, quality) {\r\n try {\r\n // If this call fails (due to browser bug, like in Firefox 3.6),\r\n // then revert to previous no-parameter image/png behavior\r\n return this._canvas.toDataURL(mimeType, quality);\r\n }\r\n catch (e) {\r\n try {\r\n return this._canvas.toDataURL();\r\n }\r\n catch (err) {\r\n Util.error('Unable to get data URL. ' +\r\n err.message +\r\n ' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');\r\n return '';\r\n }\r\n }\r\n };\r\n return Canvas;\r\n }());\r\n /**\r\n * get/set pixel ratio.\r\n * KonvaJS automatically handles pixel ratio adustments in order to render crisp drawings\r\n * on all devices. Most desktops, low end tablets, and low end phones, have device pixel ratios\r\n * of 1. Some high end tablets and phones, like iPhones and iPads have a device pixel ratio\r\n * of 2. Some Macbook Pros, and iMacs also have a device pixel ratio of 2. Some high end Android devices have pixel\r\n * ratios of 2 or 3. Some browsers like Firefox allow you to configure the pixel ratio of the viewport. Unless otherwise\r\n * specificed, the pixel ratio will be defaulted to the actual device pixel ratio. You can override the device pixel\r\n * ratio for special situations, or, if you don't want the pixel ratio to be taken into account, you can set it to 1.\r\n * @name Konva.Canvas#pixelRatio\r\n * @method\r\n * @param {Number} pixelRatio\r\n * @returns {Number}\r\n * @example\r\n * // get\r\n * var pixelRatio = layer.getCanvas.pixelRatio();\r\n *\r\n * // set\r\n * layer.getCanvas().pixelRatio(3);\r\n */\r\n Factory.addGetterSetter(Canvas, 'pixelRatio', undefined, getNumberValidator());\r\n var SceneCanvas = /** @class */ (function (_super) {\r\n __extends(SceneCanvas, _super);\r\n function SceneCanvas(config) {\r\n if (config === void 0) { config = { width: 0, height: 0 }; }\r\n var _this = _super.call(this, config) || this;\r\n _this.context = new SceneContext(_this);\r\n _this.setSize(config.width, config.height);\r\n return _this;\r\n }\r\n return SceneCanvas;\r\n }(Canvas));\r\n var HitCanvas = /** @class */ (function (_super) {\r\n __extends(HitCanvas, _super);\r\n function HitCanvas(config) {\r\n if (config === void 0) { config = { width: 0, height: 0 }; }\r\n var _this = _super.call(this, config) || this;\r\n _this.hitCanvas = true;\r\n _this.context = new HitContext(_this);\r\n _this.setSize(config.width, config.height);\r\n return _this;\r\n }\r\n return HitCanvas;\r\n }(Canvas));\n\n var DD = {\r\n get isDragging() {\r\n var flag = false;\r\n DD._dragElements.forEach(function (elem) {\r\n if (elem.dragStatus === 'dragging') {\r\n flag = true;\r\n }\r\n });\r\n return flag;\r\n },\r\n justDragged: false,\r\n get node() {\r\n // return first dragging node\r\n var node;\r\n DD._dragElements.forEach(function (elem) {\r\n node = elem.node;\r\n });\r\n return node;\r\n },\r\n _dragElements: new Map(),\r\n // methods\r\n _drag: function (evt) {\r\n var nodesToFireEvents = [];\r\n DD._dragElements.forEach(function (elem, key) {\r\n var node = elem.node;\r\n // we need to find pointer relative to that node\r\n var stage = node.getStage();\r\n stage.setPointersPositions(evt);\r\n // it is possible that user call startDrag without any event\r\n // it that case we need to detect first movable pointer and attach it into the node\r\n if (elem.pointerId === undefined) {\r\n elem.pointerId = Util._getFirstPointerId(evt);\r\n }\r\n var pos = stage._changedPointerPositions.find(function (pos) { return pos.id === elem.pointerId; });\r\n // not related pointer\r\n if (!pos) {\r\n return;\r\n }\r\n if (elem.dragStatus !== 'dragging') {\r\n var dragDistance = node.dragDistance();\r\n var distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\r\n if (distance < dragDistance) {\r\n return;\r\n }\r\n node.startDrag({ evt: evt });\r\n // a user can stop dragging inside `dragstart`\r\n if (!node.isDragging()) {\r\n return;\r\n }\r\n }\r\n node._setDragPosition(evt, elem);\r\n nodesToFireEvents.push(node);\r\n });\r\n // call dragmove only after ALL positions are changed\r\n nodesToFireEvents.forEach(function (node) {\r\n node.fire('dragmove', {\r\n type: 'dragmove',\r\n target: node,\r\n evt: evt,\r\n }, true);\r\n });\r\n },\r\n // dragBefore and dragAfter allows us to set correct order of events\r\n // setup all in dragbefore, and stop dragging only after pointerup triggered.\r\n _endDragBefore: function (evt) {\r\n DD._dragElements.forEach(function (elem, key) {\r\n var node = elem.node;\r\n // we need to find pointer relative to that node\r\n var stage = node.getStage();\r\n if (evt) {\r\n stage.setPointersPositions(evt);\r\n }\r\n var pos = stage._changedPointerPositions.find(function (pos) { return pos.id === elem.pointerId; });\r\n // that pointer is not related\r\n if (!pos) {\r\n return;\r\n }\r\n if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\r\n // if a node is stopped manully we still need to reset events:\r\n DD.justDragged = true;\r\n Konva.listenClickTap = false;\r\n elem.dragStatus = 'stopped';\r\n }\r\n var drawNode = elem.node.getLayer() ||\r\n (elem.node instanceof Konva['Stage'] && elem.node);\r\n if (drawNode) {\r\n drawNode.draw();\r\n }\r\n });\r\n },\r\n _endDragAfter: function (evt) {\r\n DD._dragElements.forEach(function (elem, key) {\r\n if (elem.dragStatus === 'stopped') {\r\n elem.node.fire('dragend', {\r\n type: 'dragend',\r\n target: elem.node,\r\n evt: evt,\r\n }, true);\r\n }\r\n if (elem.dragStatus !== 'dragging') {\r\n DD._dragElements.delete(key);\r\n }\r\n });\r\n },\r\n };\r\n if (Konva.isBrowser) {\r\n window.addEventListener('mouseup', DD._endDragBefore, true);\r\n window.addEventListener('touchend', DD._endDragBefore, true);\r\n window.addEventListener('mousemove', DD._drag);\r\n window.addEventListener('touchmove', DD._drag);\r\n window.addEventListener('mouseup', DD._endDragAfter, false);\r\n window.addEventListener('touchend', DD._endDragAfter, false);\r\n }\n\n var ids = {};\r\n var names = {};\r\n var _addId = function (node, id) {\r\n if (!id) {\r\n return;\r\n }\r\n ids[id] = node;\r\n };\r\n var _removeId = function (id, node) {\r\n // node has no id\r\n if (!id) {\r\n return;\r\n }\r\n // another node is registered (possible for duplicate ids)\r\n if (ids[id] !== node) {\r\n return;\r\n }\r\n delete ids[id];\r\n };\r\n var _addName = function (node, name) {\r\n if (name) {\r\n if (!names[name]) {\r\n names[name] = [];\r\n }\r\n names[name].push(node);\r\n }\r\n };\r\n var _removeName = function (name, _id) {\r\n if (!name) {\r\n return;\r\n }\r\n var nodes = names[name];\r\n if (!nodes) {\r\n return;\r\n }\r\n for (var n = 0; n < nodes.length; n++) {\r\n var no = nodes[n];\r\n if (no._id === _id) {\r\n nodes.splice(n, 1);\r\n }\r\n }\r\n if (nodes.length === 0) {\r\n delete names[name];\r\n }\r\n };\r\n // CONSTANTS\r\n var ABSOLUTE_OPACITY = 'absoluteOpacity', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', NAME = 'name', SET$1 = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\r\n 'xChange.konva',\r\n 'yChange.konva',\r\n 'scaleXChange.konva',\r\n 'scaleYChange.konva',\r\n 'skewXChange.konva',\r\n 'skewYChange.konva',\r\n 'rotationChange.konva',\r\n 'offsetXChange.konva',\r\n 'offsetYChange.konva',\r\n 'transformsEnabledChange.konva',\r\n ].join(SPACE);\r\n // TODO: can we remove children from node?\r\n var emptyChildren = new Collection();\r\n var idCounter = 1;\r\n /**\r\n * Node constructor. Nodes are entities that can be transformed, layered,\r\n * and have bound events. The stage, layers, groups, and shapes all extend Node.\r\n * @constructor\r\n * @memberof Konva\r\n * @param {Object} config\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n */\r\n var Node = /** @class */ (function () {\r\n function Node(config) {\r\n this._id = idCounter++;\r\n this.eventListeners = {};\r\n this.attrs = {};\r\n this.index = 0;\r\n this.parent = null;\r\n this._cache = new Map();\r\n this._attachedDepsListeners = new Map();\r\n this._lastPos = null;\r\n this._batchingTransformChange = false;\r\n this._needClearTransformCache = false;\r\n this._filterUpToDate = false;\r\n this._isUnderCache = false;\r\n this.children = emptyChildren;\r\n this._dragEventId = null;\r\n this._shouldFireChangeEvents = false;\r\n // on initial set attrs wi don't need to fire change events\r\n // because nobody is listening to them yet\r\n this.setAttrs(config);\r\n this._shouldFireChangeEvents = true;\r\n // all change event listeners are attached to the prototype\r\n }\r\n Node.prototype.hasChildren = function () {\r\n return false;\r\n };\r\n Node.prototype.getChildren = function () {\r\n return emptyChildren;\r\n };\r\n Node.prototype._clearCache = function (attr) {\r\n // if we want to clear transform cache\r\n // we don't really need to remove it from the cache\r\n // but instead mark as \"dirty\"\r\n // so we don't need to create a new instance next time\r\n if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\r\n this._cache.get(attr)) {\r\n this._cache.get(attr).dirty = true;\r\n }\r\n else if (attr) {\r\n this._cache.delete(attr);\r\n }\r\n else {\r\n this._cache.clear();\r\n }\r\n };\r\n Node.prototype._getCache = function (attr, privateGetter) {\r\n var cache = this._cache.get(attr);\r\n // for transform the cache can be NOT empty\r\n // but we still need to recalculate it if it is dirty\r\n var isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\r\n var invalid = cache === undefined || (isTransform && cache.dirty === true);\r\n // if not cached, we need to set it using the private getter method.\r\n if (invalid) {\r\n cache = privateGetter.call(this);\r\n this._cache.set(attr, cache);\r\n }\r\n return cache;\r\n };\r\n Node.prototype._calculate = function (name, deps, getter) {\r\n var _this = this;\r\n // if we are trying to calculate function for the first time\r\n // we need to attach listeners for change events\r\n if (!this._attachedDepsListeners.get(name)) {\r\n var depsString = deps.map(function (dep) { return dep + 'Change.konva'; }).join(SPACE);\r\n this.on(depsString, function () {\r\n _this._clearCache(name);\r\n });\r\n this._attachedDepsListeners.set(name, true);\r\n }\r\n // just use cache function\r\n return this._getCache(name, getter);\r\n };\r\n Node.prototype._getCanvasCache = function () {\r\n return this._cache.get(CANVAS);\r\n };\r\n /*\r\n * when the logic for a cached result depends on ancestor propagation, use this\r\n * method to clear self and children cache\r\n */\r\n Node.prototype._clearSelfAndDescendantCache = function (attr, forceEvent) {\r\n this._clearCache(attr);\r\n // trigger clear cache, so transformer can use it\r\n if (forceEvent && attr === ABSOLUTE_TRANSFORM) {\r\n this.fire('_clearTransformCache');\r\n }\r\n // skip clearing if node is cached with canvas\r\n // for performance reasons !!!\r\n if (this.isCached()) {\r\n return;\r\n }\r\n if (this.children) {\r\n this.children.each(function (node) {\r\n node._clearSelfAndDescendantCache(attr, true);\r\n });\r\n }\r\n };\r\n /**\r\n * clear cached canvas\r\n * @method\r\n * @name Konva.Node#clearCache\r\n * @returns {Konva.Node}\r\n * @example\r\n * node.clearCache();\r\n */\r\n Node.prototype.clearCache = function () {\r\n this._cache.delete(CANVAS);\r\n this._clearSelfAndDescendantCache();\r\n return this;\r\n };\r\n /**\r\n * cache node to improve drawing performance, apply filters, or create more accurate\r\n * hit regions. For all basic shapes size of cache canvas will be automatically detected.\r\n * If you need to cache your custom `Konva.Shape` instance you have to pass shape's bounding box\r\n * properties. Look at [https://konvajs.org/docs/performance/Shape_Caching.html](https://konvajs.org/docs/performance/Shape_Caching.html) for more information.\r\n * @method\r\n * @name Konva.Node#cache\r\n * @param {Object} [config]\r\n * @param {Number} [config.x]\r\n * @param {Number} [config.y]\r\n * @param {Number} [config.width]\r\n * @param {Number} [config.height]\r\n * @param {Number} [config.offset] increase canvas size by `offset` pixel in all directions.\r\n * @param {Boolean} [config.drawBorder] when set to true, a red border will be drawn around the cached\r\n * region for debugging purposes\r\n * @param {Number} [config.pixelRatio] change quality (or pixel ratio) of cached image. pixelRatio = 2 will produce 2x sized cache.\r\n * @param {Boolean} [config.imageSmoothingEnabled] control imageSmoothingEnabled property of created canvas for cache\r\n * @returns {Konva.Node}\r\n * @example\r\n * // cache a shape with the x,y position of the bounding box at the center and\r\n * // the width and height of the bounding box equal to the width and height of\r\n * // the shape obtained from shape.width() and shape.height()\r\n * image.cache();\r\n *\r\n * // cache a node and define the bounding box position and size\r\n * node.cache({\r\n * x: -30,\r\n * y: -30,\r\n * width: 100,\r\n * height: 200\r\n * });\r\n *\r\n * // cache a node and draw a red border around the bounding box\r\n * // for debugging purposes\r\n * node.cache({\r\n * x: -30,\r\n * y: -30,\r\n * width: 100,\r\n * height: 200,\r\n * offset : 10,\r\n * drawBorder: true\r\n * });\r\n */\r\n Node.prototype.cache = function (config) {\r\n var conf = config || {};\r\n var rect = {};\r\n // don't call getClientRect if we have all attributes\r\n // it means call it only if have one undefined\r\n if (conf.x === undefined ||\r\n conf.y === undefined ||\r\n conf.width === undefined ||\r\n conf.height === undefined) {\r\n rect = this.getClientRect({\r\n skipTransform: true,\r\n relativeTo: this.getParent(),\r\n });\r\n }\r\n var width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? rect.x : conf.x, y = conf.y === undefined ? rect.y : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false;\r\n if (!width || !height) {\r\n Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\r\n return;\r\n }\r\n width += offset * 2;\r\n height += offset * 2;\r\n x -= offset;\r\n y -= offset;\r\n var cachedSceneCanvas = new SceneCanvas({\r\n pixelRatio: pixelRatio,\r\n width: width,\r\n height: height,\r\n }), cachedFilterCanvas = new SceneCanvas({\r\n pixelRatio: pixelRatio,\r\n width: 0,\r\n height: 0,\r\n }), cachedHitCanvas = new HitCanvas({\r\n pixelRatio: 1,\r\n width: width,\r\n height: height,\r\n }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\r\n cachedHitCanvas.isCache = true;\r\n cachedSceneCanvas.isCache = true;\r\n this._cache.delete('canvas');\r\n this._filterUpToDate = false;\r\n if (conf.imageSmoothingEnabled === false) {\r\n cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\r\n cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\r\n }\r\n sceneContext.save();\r\n hitContext.save();\r\n sceneContext.translate(-x, -y);\r\n hitContext.translate(-x, -y);\r\n // extra flag to skip on getAbsolute opacity calc\r\n this._isUnderCache = true;\r\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\r\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\r\n this.drawScene(cachedSceneCanvas, this);\r\n this.drawHit(cachedHitCanvas, this);\r\n this._isUnderCache = false;\r\n sceneContext.restore();\r\n hitContext.restore();\r\n // this will draw a red border around the cached box for\r\n // debugging purposes\r\n if (drawBorder) {\r\n sceneContext.save();\r\n sceneContext.beginPath();\r\n sceneContext.rect(0, 0, width, height);\r\n sceneContext.closePath();\r\n sceneContext.setAttr('strokeStyle', 'red');\r\n sceneContext.setAttr('lineWidth', 5);\r\n sceneContext.stroke();\r\n sceneContext.restore();\r\n }\r\n this._cache.set(CANVAS, {\r\n scene: cachedSceneCanvas,\r\n filter: cachedFilterCanvas,\r\n hit: cachedHitCanvas,\r\n x: x,\r\n y: y,\r\n });\r\n return this;\r\n };\r\n /**\r\n * determine if node is currently cached\r\n * @method\r\n * @name Konva.Node#isCached\r\n * @returns {Boolean}\r\n */\r\n Node.prototype.isCached = function () {\r\n return this._cache.has('canvas');\r\n };\r\n /**\r\n * Return client rectangle {x, y, width, height} of node. This rectangle also include all styling (strokes, shadows, etc).\r\n * The rectangle position is relative to parent container.\r\n * The purpose of the method is similar to getBoundingClientRect API of the DOM.\r\n * @method\r\n * @name Konva.Node#getClientRect\r\n * @param {Object} config\r\n * @param {Boolean} [config.skipTransform] should we apply transform to node for calculating rect?\r\n * @param {Boolean} [config.skipShadow] should we apply shadow to the node for calculating bound box?\r\n * @param {Boolean} [config.skipStroke] should we apply stroke to the node for calculating bound box?\r\n * @param {Object} [config.relativeTo] calculate client rect relative to one of the parents\r\n * @returns {Object} rect with {x, y, width, height} properties\r\n * @example\r\n * var rect = new Konva.Rect({\r\n * width : 100,\r\n * height : 100,\r\n * x : 50,\r\n * y : 50,\r\n * strokeWidth : 4,\r\n * stroke : 'black',\r\n * offsetX : 50,\r\n * scaleY : 2\r\n * });\r\n *\r\n * // get client rect without think off transformations (position, rotation, scale, offset, etc)\r\n * rect.getClientRect({ skipTransform: true});\r\n * // returns {\r\n * // x : -2, // two pixels for stroke / 2\r\n * // y : -2,\r\n * // width : 104, // increased by 4 for stroke\r\n * // height : 104\r\n * //}\r\n *\r\n * // get client rect with transformation applied\r\n * rect.getClientRect();\r\n * // returns Object {x: -2, y: 46, width: 104, height: 208}\r\n */\r\n Node.prototype.getClientRect = function (config) {\r\n // abstract method\r\n // redefine in Container and Shape\r\n throw new Error('abstract \"getClientRect\" method call');\r\n };\r\n Node.prototype._transformedRect = function (rect, top) {\r\n var points = [\r\n { x: rect.x, y: rect.y },\r\n { x: rect.x + rect.width, y: rect.y },\r\n { x: rect.x + rect.width, y: rect.y + rect.height },\r\n { x: rect.x, y: rect.y + rect.height },\r\n ];\r\n var minX, minY, maxX, maxY;\r\n var trans = this.getAbsoluteTransform(top);\r\n points.forEach(function (point) {\r\n var transformed = trans.point(point);\r\n if (minX === undefined) {\r\n minX = maxX = transformed.x;\r\n minY = maxY = transformed.y;\r\n }\r\n minX = Math.min(minX, transformed.x);\r\n minY = Math.min(minY, transformed.y);\r\n maxX = Math.max(maxX, transformed.x);\r\n maxY = Math.max(maxY, transformed.y);\r\n });\r\n return {\r\n x: minX,\r\n y: minY,\r\n width: maxX - minX,\r\n height: maxY - minY,\r\n };\r\n };\r\n Node.prototype._drawCachedSceneCanvas = function (context) {\r\n context.save();\r\n context._applyOpacity(this);\r\n context._applyGlobalCompositeOperation(this);\r\n var canvasCache = this._getCanvasCache();\r\n context.translate(canvasCache.x, canvasCache.y);\r\n var cacheCanvas = this._getCachedSceneCanvas();\r\n var ratio = cacheCanvas.pixelRatio;\r\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\r\n context.restore();\r\n };\r\n Node.prototype._drawCachedHitCanvas = function (context) {\r\n var canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\r\n context.save();\r\n context.translate(canvasCache.x, canvasCache.y);\r\n context.drawImage(hitCanvas._canvas, 0, 0);\r\n context.restore();\r\n };\r\n Node.prototype._getCachedSceneCanvas = function () {\r\n var filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\r\n if (filters) {\r\n if (!this._filterUpToDate) {\r\n var ratio = sceneCanvas.pixelRatio;\r\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\r\n try {\r\n len = filters.length;\r\n filterContext.clear();\r\n // copy cached canvas onto filter context\r\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\r\n imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\r\n // apply filters to filter context\r\n for (n = 0; n < len; n++) {\r\n filter = filters[n];\r\n if (typeof filter !== 'function') {\r\n Util.error('Filter should be type of function, but got ' +\r\n typeof filter +\r\n ' instead. Please check correct filters');\r\n continue;\r\n }\r\n filter.call(this, imageData);\r\n filterContext.putImageData(imageData, 0, 0);\r\n }\r\n }\r\n catch (e) {\r\n Util.error('Unable to apply filter. ' +\r\n e.message +\r\n ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\r\n }\r\n this._filterUpToDate = true;\r\n }\r\n return filterCanvas;\r\n }\r\n return sceneCanvas;\r\n };\r\n /**\r\n * bind events to the node. KonvaJS supports mouseover, mousemove,\r\n * mouseout, mouseenter, mouseleave, mousedown, mouseup, wheel, contextmenu, click, dblclick, touchstart, touchmove,\r\n * touchend, tap, dbltap, dragstart, dragmove, and dragend events.\r\n * Pass in a string of events delimited by a space to bind multiple events at once\r\n * such as 'mousedown mouseup mousemove'. Include a namespace to bind an\r\n * event by name such as 'click.foobar'.\r\n * @method\r\n * @name Konva.Node#on\r\n * @param {String} evtStr e.g. 'click', 'mousedown touchstart', 'mousedown.foo touchstart.foo'\r\n * @param {Function} handler The handler function is passed an event object\r\n * @returns {Konva.Node}\r\n * @example\r\n * // add click listener\r\n * node.on('click', function() {\r\n * console.log('you clicked me!');\r\n * });\r\n *\r\n * // get the target node\r\n * node.on('click', function(evt) {\r\n * console.log(evt.target);\r\n * });\r\n *\r\n * // stop event propagation\r\n * node.on('click', function(evt) {\r\n * evt.cancelBubble = true;\r\n * });\r\n *\r\n * // bind multiple listeners\r\n * node.on('click touchstart', function() {\r\n * console.log('you clicked/touched me!');\r\n * });\r\n *\r\n * // namespace listener\r\n * node.on('click.foo', function() {\r\n * console.log('you clicked/touched me!');\r\n * });\r\n *\r\n * // get the event type\r\n * node.on('click tap', function(evt) {\r\n * var eventType = evt.type;\r\n * });\r\n *\r\n * // get native event object\r\n * node.on('click tap', function(evt) {\r\n * var nativeEvent = evt.evt;\r\n * });\r\n *\r\n * // for change events, get the old and new val\r\n * node.on('xChange', function(evt) {\r\n * var oldVal = evt.oldVal;\r\n * var newVal = evt.newVal;\r\n * });\r\n *\r\n * // get event targets\r\n * // with event delegations\r\n * layer.on('click', 'Group', function(evt) {\r\n * var shape = evt.target;\r\n * var group = evt.currentTarget;\r\n * });\r\n */\r\n Node.prototype.on = function (evtStr, handler) {\r\n if (arguments.length === 3) {\r\n return this._delegate.apply(this, arguments);\r\n }\r\n var events = evtStr.split(SPACE), len = events.length, n, event, parts, baseEvent, name;\r\n /*\r\n * loop through types and attach event listeners to\r\n * each one. eg. 'click mouseover.namespace mouseout'\r\n * will create three event bindings\r\n */\r\n for (n = 0; n < len; n++) {\r\n event = events[n];\r\n parts = event.split('.');\r\n baseEvent = parts[0];\r\n name = parts[1] || '';\r\n // create events array if it doesn't exist\r\n if (!this.eventListeners[baseEvent]) {\r\n this.eventListeners[baseEvent] = [];\r\n }\r\n this.eventListeners[baseEvent].push({\r\n name: name,\r\n handler: handler,\r\n });\r\n }\r\n return this;\r\n };\r\n /**\r\n * remove event bindings from the node. Pass in a string of\r\n * event types delimmited by a space to remove multiple event\r\n * bindings at once such as 'mousedown mouseup mousemove'.\r\n * include a namespace to remove an event binding by name\r\n * such as 'click.foobar'. If you only give a name like '.foobar',\r\n * all events in that namespace will be removed.\r\n * @method\r\n * @name Konva.Node#off\r\n * @param {String} evtStr e.g. 'click', 'mousedown touchstart', '.foobar'\r\n * @returns {Konva.Node}\r\n * @example\r\n * // remove listener\r\n * node.off('click');\r\n *\r\n * // remove multiple listeners\r\n * node.off('click touchstart');\r\n *\r\n * // remove listener by name\r\n * node.off('click.foo');\r\n */\r\n Node.prototype.off = function (evtStr, callback) {\r\n var events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\r\n if (!evtStr) {\r\n // remove all events\r\n for (t in this.eventListeners) {\r\n this._off(t);\r\n }\r\n }\r\n for (n = 0; n < len; n++) {\r\n event = events[n];\r\n parts = event.split('.');\r\n baseEvent = parts[0];\r\n name = parts[1];\r\n if (baseEvent) {\r\n if (this.eventListeners[baseEvent]) {\r\n this._off(baseEvent, name, callback);\r\n }\r\n }\r\n else {\r\n for (t in this.eventListeners) {\r\n this._off(t, name, callback);\r\n }\r\n }\r\n }\r\n return this;\r\n };\r\n // some event aliases for third party integration like HammerJS\r\n Node.prototype.dispatchEvent = function (evt) {\r\n var e = {\r\n target: this,\r\n type: evt.type,\r\n evt: evt,\r\n };\r\n this.fire(evt.type, e);\r\n return this;\r\n };\r\n Node.prototype.addEventListener = function (type, handler) {\r\n // we have to pass native event to handler\r\n this.on(type, function (evt) {\r\n handler.call(this, evt.evt);\r\n });\r\n return this;\r\n };\r\n Node.prototype.removeEventListener = function (type) {\r\n this.off(type);\r\n return this;\r\n };\r\n // like node.on\r\n Node.prototype._delegate = function (event, selector, handler) {\r\n var stopNode = this;\r\n this.on(event, function (evt) {\r\n var targets = evt.target.findAncestors(selector, true, stopNode);\r\n for (var i = 0; i < targets.length; i++) {\r\n evt = Util.cloneObject(evt);\r\n evt.currentTarget = targets[i];\r\n handler.call(targets[i], evt);\r\n }\r\n });\r\n };\r\n /**\r\n * remove a node from parent, but don't destroy. You can reuse the node later.\r\n * @method\r\n * @name Konva.Node#remove\r\n * @returns {Konva.Node}\r\n * @example\r\n * node.remove();\r\n */\r\n Node.prototype.remove = function () {\r\n if (this.isDragging()) {\r\n this.stopDrag();\r\n }\r\n // we can have drag element but that is not dragged yet\r\n // so just clear it\r\n DD._dragElements.delete(this._id);\r\n this._remove();\r\n return this;\r\n };\r\n Node.prototype._clearCaches = function () {\r\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\r\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\r\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\r\n this._clearSelfAndDescendantCache(STAGE);\r\n this._clearSelfAndDescendantCache(VISIBLE);\r\n this._clearSelfAndDescendantCache(LISTENING);\r\n };\r\n Node.prototype._remove = function () {\r\n // every cached attr that is calculated via node tree\r\n // traversal must be cleared when removing a node\r\n this._clearCaches();\r\n var parent = this.getParent();\r\n if (parent && parent.children) {\r\n parent.children.splice(this.index, 1);\r\n parent._setChildrenIndices();\r\n this.parent = null;\r\n }\r\n };\r\n /**\r\n * remove and destroy a node. Kill it and delete forever! You should not reuse node after destroy().\r\n * If the node is a container (Group, Stage or Layer) it will destroy all children too.\r\n * @method\r\n * @name Konva.Node#destroy\r\n * @example\r\n * node.destroy();\r\n */\r\n Node.prototype.destroy = function () {\r\n // remove from ids and names hashes\r\n _removeId(this.id(), this);\r\n // remove all names\r\n var names = (this.name() || '').split(/\\s/g);\r\n for (var i = 0; i < names.length; i++) {\r\n var subname = names[i];\r\n _removeName(subname, this._id);\r\n }\r\n this.remove();\r\n return this;\r\n };\r\n /**\r\n * get attr\r\n * @method\r\n * @name Konva.Node#getAttr\r\n * @param {String} attr\r\n * @returns {Integer|String|Object|Array}\r\n * @example\r\n * var x = node.getAttr('x');\r\n */\r\n Node.prototype.getAttr = function (attr) {\r\n var method = 'get' + Util._capitalize(attr);\r\n if (Util._isFunction(this[method])) {\r\n return this[method]();\r\n }\r\n // otherwise get directly\r\n return this.attrs[attr];\r\n };\r\n /**\r\n * get ancestors\r\n * @method\r\n * @name Konva.Node#getAncestors\r\n * @returns {Konva.Collection}\r\n * @example\r\n * shape.getAncestors().each(function(node) {\r\n * console.log(node.getId());\r\n * })\r\n */\r\n Node.prototype.getAncestors = function () {\r\n var parent = this.getParent(), ancestors = new Collection();\r\n while (parent) {\r\n ancestors.push(parent);\r\n parent = parent.getParent();\r\n }\r\n return ancestors;\r\n };\r\n /**\r\n * get attrs object literal\r\n * @method\r\n * @name Konva.Node#getAttrs\r\n * @returns {Object}\r\n */\r\n Node.prototype.getAttrs = function () {\r\n return this.attrs || {};\r\n };\r\n /**\r\n * set multiple attrs at once using an object literal\r\n * @method\r\n * @name Konva.Node#setAttrs\r\n * @param {Object} config object containing key value pairs\r\n * @returns {Konva.Node}\r\n * @example\r\n * node.setAttrs({\r\n * x: 5,\r\n * fill: 'red'\r\n * });\r\n */\r\n Node.prototype.setAttrs = function (config) {\r\n var _this = this;\r\n this._batchTransformChanges(function () {\r\n var key, method;\r\n if (!config) {\r\n return _this;\r\n }\r\n for (key in config) {\r\n if (key === CHILDREN) {\r\n continue;\r\n }\r\n method = SET$1 + Util._capitalize(key);\r\n // use setter if available\r\n if (Util._isFunction(_this[method])) {\r\n _this[method](config[key]);\r\n }\r\n else {\r\n // otherwise set directly\r\n _this._setAttr(key, config[key]);\r\n }\r\n }\r\n });\r\n return this;\r\n };\r\n /**\r\n * determine if node is listening for events by taking into account ancestors.\r\n *\r\n * Parent | Self | isListening\r\n * listening | listening |\r\n * ----------+-----------+------------\r\n * T | T | T\r\n * T | F | F\r\n * F | T | F\r\n * F | F | F\r\n *\r\n * @method\r\n * @name Konva.Node#isListening\r\n * @returns {Boolean}\r\n */\r\n Node.prototype.isListening = function () {\r\n return this._getCache(LISTENING, this._isListening);\r\n };\r\n Node.prototype._isListening = function (relativeTo) {\r\n var listening = this.listening();\r\n if (!listening) {\r\n return false;\r\n }\r\n var parent = this.getParent();\r\n if (parent && parent !== relativeTo && this !== relativeTo) {\r\n return parent._isListening(relativeTo);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n /**\r\n * determine if node is visible by taking into account ancestors.\r\n *\r\n * Parent | Self | isVisible\r\n * visible | visible |\r\n * ----------+-----------+------------\r\n * T | T | T\r\n * T | F | F\r\n * F | T | F\r\n * F | F | F\r\n * @method\r\n * @name Konva.Node#isVisible\r\n * @returns {Boolean}\r\n */\r\n Node.prototype.isVisible = function () {\r\n return this._getCache(VISIBLE, this._isVisible);\r\n };\r\n Node.prototype._isVisible = function (relativeTo) {\r\n var visible = this.visible();\r\n if (!visible) {\r\n return false;\r\n }\r\n var parent = this.getParent();\r\n if (parent && parent !== relativeTo && this !== relativeTo) {\r\n return parent._isVisible(relativeTo);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n Node.prototype.shouldDrawHit = function (top) {\r\n if (top) {\r\n return this._isVisible(top) && this._isListening(top);\r\n }\r\n var layer = this.getLayer();\r\n var layerUnderDrag = false;\r\n DD._dragElements.forEach(function (elem) {\r\n if (elem.dragStatus !== 'dragging') {\r\n return;\r\n }\r\n else if (elem.node.nodeType === 'Stage') {\r\n layerUnderDrag = true;\r\n }\r\n else if (elem.node.getLayer() === layer) {\r\n layerUnderDrag = true;\r\n }\r\n });\r\n var dragSkip = !Konva.hitOnDragEnabled && layerUnderDrag;\r\n return this.isListening() && this.isVisible() && !dragSkip;\r\n };\r\n /**\r\n * show node. set visible = true\r\n * @method\r\n * @name Konva.Node#show\r\n * @returns {Konva.Node}\r\n */\r\n Node.prototype.show = function () {\r\n this.visible(true);\r\n return this;\r\n };\r\n /**\r\n * hide node. Hidden nodes are no longer detectable\r\n * @method\r\n * @name Konva.Node#hide\r\n * @returns {Konva.Node}\r\n */\r\n Node.prototype.hide = function () {\r\n this.visible(false);\r\n return this;\r\n };\r\n Node.prototype.getZIndex = function () {\r\n return this.index || 0;\r\n };\r\n /**\r\n * get absolute z-index which takes into account sibling\r\n * and ancestor indices\r\n * @method\r\n * @name Konva.Node#getAbsoluteZIndex\r\n * @returns {Integer}\r\n */\r\n Node.prototype.getAbsoluteZIndex = function () {\r\n var depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\r\n function addChildren(children) {\r\n nodes = [];\r\n len = children.length;\r\n for (n = 0; n < len; n++) {\r\n child = children[n];\r\n index++;\r\n if (child.nodeType !== SHAPE) {\r\n nodes = nodes.concat(child.getChildren().toArray());\r\n }\r\n if (child._id === that._id) {\r\n n = len;\r\n }\r\n }\r\n if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\r\n addChildren(nodes);\r\n }\r\n }\r\n if (that.nodeType !== UPPER_STAGE) {\r\n addChildren(that.getStage().getChildren());\r\n }\r\n return index;\r\n };\r\n /**\r\n * get node depth in node tree. Returns an integer.\r\n * e.g. Stage depth will always be 0. Layers will always be 1. Groups and Shapes will always\r\n * be >= 2\r\n * @method\r\n * @name Konva.Node#getDepth\r\n * @returns {Integer}\r\n */\r\n Node.prototype.getDepth = function () {\r\n var depth = 0, parent = this.parent;\r\n while (parent) {\r\n depth++;\r\n parent = parent.parent;\r\n }\r\n return depth;\r\n };\r\n // sometimes we do several attributes changes\r\n // like node.position(pos)\r\n // for performance reasons, lets batch transform reset\r\n // so it work faster\r\n Node.prototype._batchTransformChanges = function (func) {\r\n this._batchingTransformChange = true;\r\n func();\r\n this._batchingTransformChange = false;\r\n if (this._needClearTransformCache) {\r\n this._clearCache(TRANSFORM);\r\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM, true);\r\n }\r\n this._needClearTransformCache = false;\r\n };\r\n Node.prototype.setPosition = function (pos) {\r\n var _this = this;\r\n this._batchTransformChanges(function () {\r\n _this.x(pos.x);\r\n _this.y(pos.y);\r\n });\r\n return this;\r\n };\r\n Node.prototype.getPosition = function () {\r\n return {\r\n x: this.x(),\r\n y: this.y(),\r\n };\r\n };\r\n Node.prototype.getAbsolutePosition = function (top) {\r\n var haveCachedParent = false;\r\n var parent = this.parent;\r\n while (parent) {\r\n if (parent.isCached()) {\r\n haveCachedParent = true;\r\n break;\r\n }\r\n parent = parent.parent;\r\n }\r\n if (haveCachedParent && !top) {\r\n // make fake top element\r\n // \"true\" is not a node, but it will just allow skip all caching\r\n top = true;\r\n }\r\n var absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Transform(), offset = this.offset();\r\n // clone the matrix array\r\n absoluteTransform.m = absoluteMatrix.slice();\r\n absoluteTransform.translate(offset.x, offset.y);\r\n return absoluteTransform.getTranslation();\r\n };\r\n Node.prototype.setAbsolutePosition = function (pos) {\r\n var origTrans = this._clearTransform();\r\n // don't clear translation\r\n this.attrs.x = origTrans.x;\r\n this.attrs.y = origTrans.y;\r\n delete origTrans.x;\r\n delete origTrans.y;\r\n // important, use non cached value\r\n this._clearCache(TRANSFORM);\r\n var it = this._getAbsoluteTransform().copy();\r\n it.invert();\r\n it.translate(pos.x, pos.y);\r\n pos = {\r\n x: this.attrs.x + it.getTranslation().x,\r\n y: this.attrs.y + it.getTranslation().y,\r\n };\r\n this._setTransform(origTrans);\r\n this.setPosition({ x: pos.x, y: pos.y });\r\n this._clearCache(TRANSFORM);\r\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\r\n return this;\r\n };\r\n Node.prototype._setTransform = function (trans) {\r\n var key;\r\n for (key in trans) {\r\n this.attrs[key] = trans[key];\r\n }\r\n // this._clearCache(TRANSFORM);\r\n // this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\r\n };\r\n Node.prototype._clearTransform = function () {\r\n var trans = {\r\n x: this.x(),\r\n y: this.y(),\r\n rotation: this.rotation(),\r\n scaleX: this.scaleX(),\r\n scaleY: this.scaleY(),\r\n offsetX: this.offsetX(),\r\n offsetY: this.offsetY(),\r\n skewX: this.skewX(),\r\n skewY: this.skewY(),\r\n };\r\n this.attrs.x = 0;\r\n this.attrs.y = 0;\r\n this.attrs.rotation = 0;\r\n this.attrs.scaleX = 1;\r\n this.attrs.scaleY = 1;\r\n this.attrs.offsetX = 0;\r\n this.attrs.offsetY = 0;\r\n this.attrs.skewX = 0;\r\n this.attrs.skewY = 0;\r\n // return original transform\r\n return trans;\r\n };\r\n /**\r\n * move node by an amount relative to its current position\r\n * @method\r\n * @name Konva.Node#move\r\n * @param {Object} change\r\n * @param {Number} change.x\r\n * @param {Number} change.y\r\n * @returns {Konva.Node}\r\n * @example\r\n * // move node in x direction by 1px and y direction by 2px\r\n * node.move({\r\n * x: 1,\r\n * y: 2\r\n * });\r\n */\r\n Node.prototype.move = function (change) {\r\n var changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\r\n if (changeX !== undefined) {\r\n x += changeX;\r\n }\r\n if (changeY !== undefined) {\r\n y += changeY;\r\n }\r\n this.setPosition({ x: x, y: y });\r\n return this;\r\n };\r\n Node.prototype._eachAncestorReverse = function (func, top) {\r\n var family = [], parent = this.getParent(), len, n;\r\n // if top node is defined, and this node is top node,\r\n // there's no need to build a family tree. just execute\r\n // func with this because it will be the only node\r\n if (top && top._id === this._id) {\r\n // func(this);\r\n return;\r\n }\r\n family.unshift(this);\r\n while (parent && (!top || parent._id !== top._id)) {\r\n family.unshift(parent);\r\n parent = parent.parent;\r\n }\r\n len = family.length;\r\n for (n = 0; n < len; n++) {\r\n func(family[n]);\r\n }\r\n };\r\n /**\r\n * rotate node by an amount in degrees relative to its current rotation\r\n * @method\r\n * @name Konva.Node#rotate\r\n * @param {Number} theta\r\n * @returns {Konva.Node}\r\n */\r\n Node.prototype.rotate = function (theta) {\r\n this.rotation(this.rotation() + theta);\r\n return this;\r\n };\r\n /**\r\n * move node to the top of its siblings\r\n * @method\r\n * @name Konva.Node#moveToTop\r\n * @returns {Boolean}\r\n */\r\n Node.prototype.moveToTop = function () {\r\n if (!this.parent) {\r\n Util.warn('Node has no parent. moveToTop function is ignored.');\r\n return false;\r\n }\r\n var index = this.index;\r\n this.parent.children.splice(index, 1);\r\n this.parent.children.push(this);\r\n this.parent._setChildrenIndices();\r\n return true;\r\n };\r\n /**\r\n * move node up\r\n * @method\r\n * @name Konva.Node#moveUp\r\n * @returns {Boolean} flag is moved or not\r\n */\r\n Node.prototype.moveUp = function () {\r\n if (!this.parent) {\r\n Util.warn('Node has no parent. moveUp function is ignored.');\r\n return false;\r\n }\r\n var index = this.index, len = this.parent.getChildren().length;\r\n if (index < len - 1) {\r\n this.parent.children.splice(index, 1);\r\n this.parent.children.splice(index + 1, 0, this);\r\n this.parent._setChildrenIndices();\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * move node down\r\n * @method\r\n * @name Konva.Node#moveDown\r\n * @returns {Boolean}\r\n */\r\n Node.prototype.moveDown = function () {\r\n if (!this.parent) {\r\n Util.warn('Node has no parent. moveDown function is ignored.');\r\n return false;\r\n }\r\n var index = this.index;\r\n if (index > 0) {\r\n this.parent.children.splice(index, 1);\r\n this.parent.children.splice(index - 1, 0, this);\r\n this.parent._setChildrenIndices();\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * move node to the bottom of its siblings\r\n * @method\r\n * @name Konva.Node#moveToBottom\r\n * @returns {Boolean}\r\n */\r\n Node.prototype.moveToBottom = function () {\r\n if (!this.parent) {\r\n Util.warn('Node has no parent. moveToBottom function is ignored.');\r\n return false;\r\n }\r\n var index = this.index;\r\n if (index > 0) {\r\n this.parent.children.splice(index, 1);\r\n this.parent.children.unshift(this);\r\n this.parent._setChildrenIndices();\r\n return true;\r\n }\r\n return false;\r\n };\r\n Node.prototype.setZIndex = function (zIndex) {\r\n if (!this.parent) {\r\n Util.warn('Node has no parent. zIndex parameter is ignored.');\r\n return this;\r\n }\r\n if (zIndex < 0 || zIndex >= this.parent.children.length) {\r\n Util.warn('Unexpected value ' +\r\n zIndex +\r\n ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\r\n (this.parent.children.length - 1) +\r\n '.');\r\n }\r\n var index = this.index;\r\n this.parent.children.splice(index, 1);\r\n this.parent.children.splice(zIndex, 0, this);\r\n this.parent._setChildrenIndices();\r\n return this;\r\n };\r\n /**\r\n * get absolute opacity\r\n * @method\r\n * @name Konva.Node#getAbsoluteOpacity\r\n * @returns {Number}\r\n */\r\n Node.prototype.getAbsoluteOpacity = function () {\r\n return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\r\n };\r\n Node.prototype._getAbsoluteOpacity = function () {\r\n var absOpacity = this.opacity();\r\n var parent = this.getParent();\r\n if (parent && !parent._isUnderCache) {\r\n absOpacity *= parent.getAbsoluteOpacity();\r\n }\r\n return absOpacity;\r\n };\r\n /**\r\n * move node to another container\r\n * @method\r\n * @name Konva.Node#moveTo\r\n * @param {Container} newContainer\r\n * @returns {Konva.Node}\r\n * @example\r\n * // move node from current layer into layer2\r\n * node.moveTo(layer2);\r\n */\r\n Node.prototype.moveTo = function (newContainer) {\r\n // do nothing if new container is already parent\r\n if (this.getParent() !== newContainer) {\r\n this._remove();\r\n newContainer.add(this);\r\n }\r\n return this;\r\n };\r\n /**\r\n * convert Node into an object for serialization. Returns an object.\r\n * @method\r\n * @name Konva.Node#toObject\r\n * @returns {Object}\r\n */\r\n Node.prototype.toObject = function () {\r\n var obj = {}, attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\r\n obj.attrs = {};\r\n for (key in attrs) {\r\n val = attrs[key];\r\n // if value is object and object is not plain\r\n // like class instance, we should skip it and to not include\r\n nonPlainObject =\r\n Util.isObject(val) && !Util._isPlainObject(val) && !Util._isArray(val);\r\n if (nonPlainObject) {\r\n continue;\r\n }\r\n getter = typeof this[key] === 'function' && this[key];\r\n // remove attr value so that we can extract the default value from the getter\r\n delete attrs[key];\r\n defaultValue = getter ? getter.call(this) : null;\r\n // restore attr value\r\n attrs[key] = val;\r\n if (defaultValue !== val) {\r\n obj.attrs[key] = val;\r\n }\r\n }\r\n obj.className = this.getClassName();\r\n return Util._prepareToStringify(obj);\r\n };\r\n /**\r\n * convert Node into a JSON string. Returns a JSON string.\r\n * @method\r\n * @name Konva.Node#toJSON\r\n * @returns {String}\r\n */\r\n Node.prototype.toJSON = function () {\r\n return JSON.stringify(this.toObject());\r\n };\r\n /**\r\n * get parent container\r\n * @method\r\n * @name Konva.Node#getParent\r\n * @returns {Konva.Node}\r\n */\r\n Node.prototype.getParent = function () {\r\n return this.parent;\r\n };\r\n /**\r\n * get all ancestors (parent then parent of the parent, etc) of the node\r\n * @method\r\n * @name Konva.Node#findAncestors\r\n * @param {String} selector selector for search\r\n * @param {Boolean} [includeSelf] show we think that node is ancestro itself?\r\n * @param {Konva.Node} [stopNode] optional node where we need to stop searching (one of ancestors)\r\n * @returns {Array} [ancestors]\r\n * @example\r\n * // get one of the parent group\r\n * var parentGroups = node.findAncestors('Group');\r\n */\r\n Node.prototype.findAncestors = function (selector, includeSelf, stopNode) {\r\n var res = [];\r\n if (includeSelf && this._isMatch(selector)) {\r\n res.push(this);\r\n }\r\n var ancestor = this.parent;\r\n while (ancestor) {\r\n if (ancestor === stopNode) {\r\n return res;\r\n }\r\n if (ancestor._isMatch(selector)) {\r\n res.push(ancestor);\r\n }\r\n ancestor = ancestor.parent;\r\n }\r\n return res;\r\n };\r\n Node.prototype.isAncestorOf = function (node) {\r\n return false;\r\n };\r\n /**\r\n * get ancestor (parent or parent of the parent, etc) of the node that match passed selector\r\n * @method\r\n * @name Konva.Node#findAncestor\r\n * @param {String} selector selector for search\r\n * @param {Boolean} [includeSelf] show we think that node is ancestro itself?\r\n * @param {Konva.Node} [stopNode] optional node where we need to stop searching (one of ancestors)\r\n * @returns {Konva.Node} ancestor\r\n * @example\r\n * // get one of the parent group\r\n * var group = node.findAncestors('.mygroup');\r\n */\r\n Node.prototype.findAncestor = function (selector, includeSelf, stopNode) {\r\n return this.findAncestors(selector, includeSelf, stopNode)[0];\r\n };\r\n // is current node match passed selector?\r\n Node.prototype._isMatch = function (selector) {\r\n if (!selector) {\r\n return false;\r\n }\r\n if (typeof selector === 'function') {\r\n return selector(this);\r\n }\r\n var selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\r\n for (n = 0; n < len; n++) {\r\n sel = selectorArr[n];\r\n if (!Util.isValidSelector(sel)) {\r\n Util.warn('Selector \"' +\r\n sel +\r\n '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\r\n Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\r\n Util.warn('Konva is awesome, right?');\r\n }\r\n // id selector\r\n if (sel.charAt(0) === '#') {\r\n if (this.id() === sel.slice(1)) {\r\n return true;\r\n }\r\n }\r\n else if (sel.charAt(0) === '.') {\r\n // name selector\r\n if (this.hasName(sel.slice(1))) {\r\n return true;\r\n }\r\n }\r\n else if (this.className === sel || this.nodeType === sel) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * get layer ancestor\r\n * @method\r\n * @name Konva.Node#getLayer\r\n * @returns {Konva.Layer}\r\n */\r\n Node.prototype.getLayer = function () {\r\n var parent = this.getParent();\r\n return parent ? parent.getLayer() : null;\r\n };\r\n /**\r\n * get stage ancestor\r\n * @method\r\n * @name Konva.Node#getStage\r\n * @returns {Konva.Stage}\r\n */\r\n Node.prototype.getStage = function () {\r\n return this._getCache(STAGE, this._getStage);\r\n };\r\n Node.prototype._getStage = function () {\r\n var parent = this.getParent();\r\n if (parent) {\r\n return parent.getStage();\r\n }\r\n else {\r\n return undefined;\r\n }\r\n };\r\n /**\r\n * fire event\r\n * @method\r\n * @name Konva.Node#fire\r\n * @param {String} eventType event type. can be a regular event, like click, mouseover, or mouseout, or it can be a custom event, like myCustomEvent\r\n * @param {Event} [evt] event object\r\n * @param {Boolean} [bubble] setting the value to false, or leaving it undefined, will result in the event\r\n * not bubbling. Setting the value to true will result in the event bubbling.\r\n * @returns {Konva.Node}\r\n * @example\r\n * // manually fire click event\r\n * node.fire('click');\r\n *\r\n * // fire custom event\r\n * node.fire('foo');\r\n *\r\n * // fire custom event with custom event object\r\n * node.fire('foo', {\r\n * bar: 10\r\n * });\r\n *\r\n * // fire click event that bubbles\r\n * node.fire('click', null, true);\r\n */\r\n Node.prototype.fire = function (eventType, evt, bubble) {\r\n if (evt === void 0) { evt = {}; }\r\n evt.target = evt.target || this;\r\n // bubble\r\n if (bubble) {\r\n this._fireAndBubble(eventType, evt);\r\n }\r\n else {\r\n // no bubble\r\n this._fire(eventType, evt);\r\n }\r\n return this;\r\n };\r\n /**\r\n * get absolute transform of the node which takes into\r\n * account its ancestor transforms\r\n * @method\r\n * @name Konva.Node#getAbsoluteTransform\r\n * @returns {Konva.Transform}\r\n */\r\n Node.prototype.getAbsoluteTransform = function (top) {\r\n // if using an argument, we can't cache the result.\r\n if (top) {\r\n return this._getAbsoluteTransform(top);\r\n }\r\n else {\r\n // if no argument, we can cache the result\r\n return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\r\n }\r\n };\r\n Node.prototype._getAbsoluteTransform = function (top) {\r\n var at;\r\n // we we need position relative to an ancestor, we will iterate for all\r\n if (top) {\r\n at = new Transform();\r\n // start with stage and traverse downwards to self\r\n this._eachAncestorReverse(function (node) {\r\n var transformsEnabled = node.transformsEnabled();\r\n if (transformsEnabled === 'all') {\r\n at.multiply(node.getTransform());\r\n }\r\n else if (transformsEnabled === 'position') {\r\n at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\r\n }\r\n }, top);\r\n return at;\r\n }\r\n else {\r\n // try to use a cached value\r\n at = this._cache.get(ABSOLUTE_TRANSFORM) || new Transform();\r\n if (this.parent) {\r\n // transform will be cached\r\n this.parent.getAbsoluteTransform().copyInto(at);\r\n }\r\n else {\r\n at.reset();\r\n }\r\n var transformsEnabled = this.transformsEnabled();\r\n if (transformsEnabled === 'all') {\r\n at.multiply(this.getTransform());\r\n }\r\n else if (transformsEnabled === 'position') {\r\n // use \"attrs\" directly, because it is a bit faster\r\n var x = this.attrs.x || 0;\r\n var y = this.attrs.y || 0;\r\n var offsetX = this.attrs.offsetX || 0;\r\n var offsetY = this.attrs.offsetY || 0;\r\n at.translate(x - offsetX, y - offsetY);\r\n }\r\n at.dirty = false;\r\n return at;\r\n }\r\n };\r\n /**\r\n * get absolute scale of the node which takes into\r\n * account its ancestor scales\r\n * @method\r\n * @name Konva.Node#getAbsoluteScale\r\n * @returns {Object}\r\n * @example\r\n * // get absolute scale x\r\n * var scaleX = node.getAbsoluteScale().x;\r\n */\r\n Node.prototype.getAbsoluteScale = function (top) {\r\n // do not cache this calculations,\r\n // because it use cache transform\r\n // this is special logic for caching with some shapes with shadow\r\n var parent = this;\r\n while (parent) {\r\n if (parent._isUnderCache) {\r\n top = parent;\r\n }\r\n parent = parent.getParent();\r\n }\r\n var transform = this.getAbsoluteTransform(top);\r\n var attrs = transform.decompose();\r\n return {\r\n x: attrs.scaleX,\r\n y: attrs.scaleY,\r\n };\r\n };\r\n /**\r\n * get absolute rotation of the node which takes into\r\n * account its ancestor rotations\r\n * @method\r\n * @name Konva.Node#getAbsoluteRotation\r\n * @returns {Number}\r\n * @example\r\n * // get absolute scale x\r\n * var rotation = node.getAbsoluteRotation();\r\n */\r\n Node.prototype.getAbsoluteRotation = function () {\r\n // var parent: Node = this;\r\n // var rotation = 0;\r\n // while (parent) {\r\n // rotation += parent.rotation();\r\n // parent = parent.getParent();\r\n // }\r\n // return rotation;\r\n return this.getAbsoluteTransform().decompose().rotation;\r\n };\r\n /**\r\n * get transform of the node\r\n * @method\r\n * @name Konva.Node#getTransform\r\n * @returns {Konva.Transform}\r\n */\r\n Node.prototype.getTransform = function () {\r\n return this._getCache(TRANSFORM, this._getTransform);\r\n };\r\n Node.prototype._getTransform = function () {\r\n var _a, _b;\r\n var m = this._cache.get(TRANSFORM) || new Transform();\r\n m.reset();\r\n // I was trying to use attributes directly here\r\n // but it doesn't work for Transformer well\r\n // because it overwrite x,y getters\r\n var x = this.x(), y = this.y(), rotation = Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\r\n if (x !== 0 || y !== 0) {\r\n m.translate(x, y);\r\n }\r\n if (rotation !== 0) {\r\n m.rotate(rotation);\r\n }\r\n if (skewX !== 0 || skewY !== 0) {\r\n m.skew(skewX, skewY);\r\n }\r\n if (scaleX !== 1 || scaleY !== 1) {\r\n m.scale(scaleX, scaleY);\r\n }\r\n if (offsetX !== 0 || offsetY !== 0) {\r\n m.translate(-1 * offsetX, -1 * offsetY);\r\n }\r\n m.dirty = false;\r\n return m;\r\n };\r\n /**\r\n * clone node. Returns a new Node instance with identical attributes. You can also override\r\n * the node properties with an object literal, enabling you to use an existing node as a template\r\n * for another node\r\n * @method\r\n * @name Konva.Node#clone\r\n * @param {Object} obj override attrs\r\n * @returns {Konva.Node}\r\n * @example\r\n * // simple clone\r\n * var clone = node.clone();\r\n *\r\n * // clone a node and override the x position\r\n * var clone = rect.clone({\r\n * x: 5\r\n * });\r\n */\r\n Node.prototype.clone = function (obj) {\r\n // instantiate new node\r\n var attrs = Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\r\n // apply attr overrides\r\n for (key in obj) {\r\n attrs[key] = obj[key];\r\n }\r\n var node = new this.constructor(attrs);\r\n // copy over listeners\r\n for (key in this.eventListeners) {\r\n allListeners = this.eventListeners[key];\r\n len = allListeners.length;\r\n for (n = 0; n < len; n++) {\r\n listener = allListeners[n];\r\n /*\r\n * don't include konva namespaced listeners because\r\n * these are generated by the constructors\r\n */\r\n if (listener.name.indexOf(KONVA) < 0) {\r\n // if listeners array doesn't exist, then create it\r\n if (!node.eventListeners[key]) {\r\n node.eventListeners[key] = [];\r\n }\r\n node.eventListeners[key].push(listener);\r\n }\r\n }\r\n }\r\n return node;\r\n };\r\n Node.prototype._toKonvaCanvas = function (config) {\r\n config = config || {};\r\n var box = this.getClientRect();\r\n var stage = this.getStage(), x = config.x !== undefined ? config.x : box.x, y = config.y !== undefined ? config.y : box.y, pixelRatio = config.pixelRatio || 1, canvas = new SceneCanvas({\r\n width: config.width || box.width || (stage ? stage.width() : 0),\r\n height: config.height || box.height || (stage ? stage.height() : 0),\r\n pixelRatio: pixelRatio,\r\n }), context = canvas.getContext();\r\n context.save();\r\n if (x || y) {\r\n context.translate(-1 * x, -1 * y);\r\n }\r\n this.drawScene(canvas);\r\n context.restore();\r\n return canvas;\r\n };\r\n /**\r\n * converts node into an canvas element.\r\n * @method\r\n * @name Konva.Node#toCanvas\r\n * @param {Object} config\r\n * @param {Function} config.callback function executed when the composite has completed\r\n * @param {Number} [config.x] x position of canvas section\r\n * @param {Number} [config.y] y position of canvas section\r\n * @param {Number} [config.width] width of canvas section\r\n * @param {Number} [config.height] height of canvas section\r\n * @param {Number} [config.pixelRatio] pixelRatio of output canvas. Default is 1.\r\n * You can use that property to increase quality of the image, for example for super hight quality exports\r\n * or usage on retina (or similar) displays. pixelRatio will be used to multiply the size of exported image.\r\n * If you export to 500x500 size with pixelRatio = 2, then produced image will have size 1000x1000.\r\n * @example\r\n * var canvas = node.toCanvas();\r\n */\r\n Node.prototype.toCanvas = function (config) {\r\n return this._toKonvaCanvas(config)._canvas;\r\n };\r\n /**\r\n * Creates a composite data URL (base64 string). If MIME type is not\r\n * specified, then \"image/png\" will result. For \"image/jpeg\", specify a quality\r\n * level as quality (range 0.0 - 1.0)\r\n * @method\r\n * @name Konva.Node#toDataURL\r\n * @param {Object} config\r\n * @param {String} [config.mimeType] can be \"image/png\" or \"image/jpeg\".\r\n * \"image/png\" is the default\r\n * @param {Number} [config.x] x position of canvas section\r\n * @param {Number} [config.y] y position of canvas section\r\n * @param {Number} [config.width] width of canvas section\r\n * @param {Number} [config.height] height of canvas section\r\n * @param {Number} [config.quality] jpeg quality. If using an \"image/jpeg\" mimeType,\r\n * you can specify the quality from 0 to 1, where 0 is very poor quality and 1\r\n * is very high quality\r\n * @param {Number} [config.pixelRatio] pixelRatio of output image url. Default is 1.\r\n * You can use that property to increase quality of the image, for example for super hight quality exports\r\n * or usage on retina (or similar) displays. pixelRatio will be used to multiply the size of exported image.\r\n * If you export to 500x500 size with pixelRatio = 2, then produced image will have size 1000x1000.\r\n * @returns {String}\r\n */\r\n Node.prototype.toDataURL = function (config) {\r\n config = config || {};\r\n var mimeType = config.mimeType || null, quality = config.quality || null;\r\n var url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\r\n if (config.callback) {\r\n config.callback(url);\r\n }\r\n return url;\r\n };\r\n /**\r\n * converts node into an image. Since the toImage\r\n * method is asynchronous, a callback is required. toImage is most commonly used\r\n * to cache complex drawings as an image so that they don't have to constantly be redrawn\r\n * @method\r\n * @name Konva.Node#toImage\r\n * @param {Object} config\r\n * @param {Function} config.callback function executed when the composite has completed\r\n * @param {String} [config.mimeType] can be \"image/png\" or \"image/jpeg\".\r\n * \"image/png\" is the default\r\n * @param {Number} [config.x] x position of canvas section\r\n * @param {Number} [config.y] y position of canvas section\r\n * @param {Number} [config.width] width of canvas section\r\n * @param {Number} [config.height] height of canvas section\r\n * @param {Number} [config.quality] jpeg quality. If using an \"image/jpeg\" mimeType,\r\n * you can specify the quality from 0 to 1, where 0 is very poor quality and 1\r\n * is very high quality\r\n * @param {Number} [config.pixelRatio] pixelRatio of output image. Default is 1.\r\n * You can use that property to increase quality of the image, for example for super hight quality exports\r\n * or usage on retina (or similar) displays. pixelRatio will be used to multiply the size of exported image.\r\n * If you export to 500x500 size with pixelRatio = 2, then produced image will have size 1000x1000.\r\n * @example\r\n * var image = node.toImage({\r\n * callback(img) {\r\n * // do stuff with img\r\n * }\r\n * });\r\n */\r\n Node.prototype.toImage = function (config) {\r\n if (!config || !config.callback) {\r\n throw 'callback required for toImage method config argument';\r\n }\r\n var callback = config.callback;\r\n delete config.callback;\r\n Util._urlToImage(this.toDataURL(config), function (img) {\r\n callback(img);\r\n });\r\n };\r\n Node.prototype.setSize = function (size) {\r\n this.width(size.width);\r\n this.height(size.height);\r\n return this;\r\n };\r\n Node.prototype.getSize = function () {\r\n return {\r\n width: this.width(),\r\n height: this.height(),\r\n };\r\n };\r\n /**\r\n * get class name, which may return Stage, Layer, Group, or shape class names like Rect, Circle, Text, etc.\r\n * @method\r\n * @name Konva.Node#getClassName\r\n * @returns {String}\r\n */\r\n Node.prototype.getClassName = function () {\r\n return this.className || this.nodeType;\r\n };\r\n /**\r\n * get the node type, which may return Stage, Layer, Group, or Shape\r\n * @method\r\n * @name Konva.Node#getType\r\n * @returns {String}\r\n */\r\n Node.prototype.getType = function () {\r\n return this.nodeType;\r\n };\r\n Node.prototype.getDragDistance = function () {\r\n // compare with undefined because we need to track 0 value\r\n if (this.attrs.dragDistance !== undefined) {\r\n return this.attrs.dragDistance;\r\n }\r\n else if (this.parent) {\r\n return this.parent.getDragDistance();\r\n }\r\n else {\r\n return Konva.dragDistance;\r\n }\r\n };\r\n Node.prototype._off = function (type, name, callback) {\r\n var evtListeners = this.eventListeners[type], i, evtName, handler;\r\n for (i = 0; i < evtListeners.length; i++) {\r\n evtName = evtListeners[i].name;\r\n handler = evtListeners[i].handler;\r\n // the following two conditions must be true in order to remove a handler:\r\n // 1) the current event name cannot be konva unless the event name is konva\r\n // this enables developers to force remove a konva specific listener for whatever reason\r\n // 2) an event name is not specified, or if one is specified, it matches the current event name\r\n if ((evtName !== 'konva' || name === 'konva') &&\r\n (!name || evtName === name) &&\r\n (!callback || callback === handler)) {\r\n evtListeners.splice(i, 1);\r\n if (evtListeners.length === 0) {\r\n delete this.eventListeners[type];\r\n break;\r\n }\r\n i--;\r\n }\r\n }\r\n };\r\n Node.prototype._fireChangeEvent = function (attr, oldVal, newVal) {\r\n this._fire(attr + CHANGE, {\r\n oldVal: oldVal,\r\n newVal: newVal,\r\n });\r\n };\r\n Node.prototype.setId = function (id) {\r\n var oldId = this.id();\r\n _removeId(oldId, this);\r\n _addId(this, id);\r\n this._setAttr('id', id);\r\n return this;\r\n };\r\n Node.prototype.setName = function (name) {\r\n var oldNames = (this.name() || '').split(/\\s/g);\r\n var newNames = (name || '').split(/\\s/g);\r\n var subname, i;\r\n // remove all subnames\r\n for (i = 0; i < oldNames.length; i++) {\r\n subname = oldNames[i];\r\n if (newNames.indexOf(subname) === -1 && subname) {\r\n _removeName(subname, this._id);\r\n }\r\n }\r\n // add new names\r\n for (i = 0; i < newNames.length; i++) {\r\n subname = newNames[i];\r\n if (oldNames.indexOf(subname) === -1 && subname) {\r\n _addName(this, subname);\r\n }\r\n }\r\n this._setAttr(NAME, name);\r\n return this;\r\n };\r\n /**\r\n * add name to node\r\n * @method\r\n * @name Konva.Node#addName\r\n * @param {String} name\r\n * @returns {Konva.Node}\r\n * @example\r\n * node.name('red');\r\n * node.addName('selected');\r\n * node.name(); // return 'red selected'\r\n */\r\n Node.prototype.addName = function (name) {\r\n if (!this.hasName(name)) {\r\n var oldName = this.name();\r\n var newName = oldName ? oldName + ' ' + name : name;\r\n this.setName(newName);\r\n }\r\n return this;\r\n };\r\n /**\r\n * check is node has name\r\n * @method\r\n * @name Konva.Node#hasName\r\n * @param {String} name\r\n * @returns {Boolean}\r\n * @example\r\n * node.name('red');\r\n * node.hasName('red'); // return true\r\n * node.hasName('selected'); // return false\r\n * node.hasName(''); // return false\r\n */\r\n Node.prototype.hasName = function (name) {\r\n if (!name) {\r\n return false;\r\n }\r\n var fullName = this.name();\r\n if (!fullName) {\r\n return false;\r\n }\r\n // if name is '' the \"names\" will be [''], so I added extra check above\r\n var names = (fullName || '').split(/\\s/g);\r\n return names.indexOf(name) !== -1;\r\n };\r\n /**\r\n * remove name from node\r\n * @method\r\n * @name Konva.Node#removeName\r\n * @param {String} name\r\n * @returns {Konva.Node}\r\n * @example\r\n * node.name('red selected');\r\n * node.removeName('selected');\r\n * node.hasName('selected'); // return false\r\n * node.name(); // return 'red'\r\n */\r\n Node.prototype.removeName = function (name) {\r\n var names = (this.name() || '').split(/\\s/g);\r\n var index = names.indexOf(name);\r\n if (index !== -1) {\r\n names.splice(index, 1);\r\n this.setName(names.join(' '));\r\n }\r\n return this;\r\n };\r\n /**\r\n * set attr\r\n * @method\r\n * @name Konva.Node#setAttr\r\n * @param {String} attr\r\n * @param {*} val\r\n * @returns {Konva.Node}\r\n * @example\r\n * node.setAttr('x', 5);\r\n */\r\n Node.prototype.setAttr = function (attr, val) {\r\n var func = this[SET$1 + Util._capitalize(attr)];\r\n if (Util._isFunction(func)) {\r\n func.call(this, val);\r\n }\r\n else {\r\n // otherwise set directly\r\n this._setAttr(attr, val);\r\n }\r\n return this;\r\n };\r\n Node.prototype._setAttr = function (key, val, skipFire) {\r\n var oldVal = this.attrs[key];\r\n if (oldVal === val && !Util.isObject(val)) {\r\n return;\r\n }\r\n if (val === undefined || val === null) {\r\n delete this.attrs[key];\r\n }\r\n else {\r\n this.attrs[key] = val;\r\n }\r\n if (this._shouldFireChangeEvents) {\r\n this._fireChangeEvent(key, oldVal, val);\r\n }\r\n };\r\n Node.prototype._setComponentAttr = function (key, component, val) {\r\n var oldVal;\r\n if (val !== undefined) {\r\n oldVal = this.attrs[key];\r\n if (!oldVal) {\r\n // set value to default value using getAttr\r\n this.attrs[key] = this.getAttr(key);\r\n }\r\n this.attrs[key][component] = val;\r\n this._fireChangeEvent(key, oldVal, val);\r\n }\r\n };\r\n Node.prototype._fireAndBubble = function (eventType, evt, compareShape) {\r\n if (evt && this.nodeType === SHAPE) {\r\n evt.target = this;\r\n }\r\n var shouldStop = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\r\n ((compareShape &&\r\n (this === compareShape ||\r\n (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\r\n (this.nodeType === 'Stage' && !compareShape));\r\n if (!shouldStop) {\r\n this._fire(eventType, evt);\r\n // simulate event bubbling\r\n var stopBubble = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\r\n compareShape &&\r\n compareShape.isAncestorOf &&\r\n compareShape.isAncestorOf(this) &&\r\n !compareShape.isAncestorOf(this.parent);\r\n if (((evt && !evt.cancelBubble) || !evt) &&\r\n this.parent &&\r\n this.parent.isListening() &&\r\n !stopBubble) {\r\n if (compareShape && compareShape.parent) {\r\n this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\r\n }\r\n else {\r\n this._fireAndBubble.call(this.parent, eventType, evt);\r\n }\r\n }\r\n }\r\n };\r\n Node.prototype._getListeners = function (eventType) {\r\n var totalEvents = [];\r\n var obj;\r\n while (true) {\r\n obj = obj ? Object.getPrototypeOf(obj) : this;\r\n if (!obj) {\r\n break;\r\n }\r\n if (!obj.eventListeners) {\r\n continue;\r\n }\r\n var events = obj.eventListeners[eventType];\r\n if (!events) {\r\n continue;\r\n }\r\n totalEvents = events.concat(totalEvents);\r\n obj = Object.getPrototypeOf(obj);\r\n }\r\n return totalEvents;\r\n };\r\n Node.prototype._fire = function (eventType, evt) {\r\n var events = this._getListeners(eventType), i;\r\n if (events.length) {\r\n evt = evt || {};\r\n evt.currentTarget = this;\r\n evt.type = eventType;\r\n for (i = 0; i < events.length; i++) {\r\n events[i].handler.call(this, evt);\r\n }\r\n }\r\n };\r\n /**\r\n * draw both scene and hit graphs. If the node being drawn is the stage, all of the layers will be cleared and redrawn\r\n * @method\r\n * @name Konva.Node#draw\r\n * @returns {Konva.Node}\r\n */\r\n Node.prototype.draw = function () {\r\n this.drawScene();\r\n this.drawHit();\r\n return this;\r\n };\r\n // drag & drop\r\n Node.prototype._createDragElement = function (evt) {\r\n var pointerId = evt ? evt.pointerId : undefined;\r\n var stage = this.getStage();\r\n var ap = this.getAbsolutePosition();\r\n var pos = stage._getPointerById(pointerId) ||\r\n stage._changedPointerPositions[0] ||\r\n ap;\r\n DD._dragElements.set(this._id, {\r\n node: this,\r\n startPointerPos: pos,\r\n offset: {\r\n x: pos.x - ap.x,\r\n y: pos.y - ap.y,\r\n },\r\n dragStatus: 'ready',\r\n pointerId: pointerId,\r\n });\r\n };\r\n /**\r\n * initiate drag and drop.\r\n * @method\r\n * @name Konva.Node#startDrag\r\n */\r\n Node.prototype.startDrag = function (evt) {\r\n if (!DD._dragElements.has(this._id)) {\r\n this._createDragElement(evt);\r\n }\r\n var elem = DD._dragElements.get(this._id);\r\n elem.dragStatus = 'dragging';\r\n this.fire('dragstart', {\r\n type: 'dragstart',\r\n target: this,\r\n evt: evt && evt.evt,\r\n }, true);\r\n };\r\n Node.prototype._setDragPosition = function (evt, elem) {\r\n // const pointers = this.getStage().getPointersPositions();\r\n // const pos = pointers.find(p => p.id === this._dragEventId);\r\n var pos = this.getStage()._getPointerById(elem.pointerId);\r\n if (!pos) {\r\n return;\r\n }\r\n var newNodePos = {\r\n x: pos.x - elem.offset.x,\r\n y: pos.y - elem.offset.y,\r\n };\r\n var dbf = this.dragBoundFunc();\r\n if (dbf !== undefined) {\r\n var bounded = dbf.call(this, newNodePos, evt);\r\n if (!bounded) {\r\n Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\r\n }\r\n else {\r\n newNodePos = bounded;\r\n }\r\n }\r\n if (!this._lastPos ||\r\n this._lastPos.x !== newNodePos.x ||\r\n this._lastPos.y !== newNodePos.y) {\r\n this.setAbsolutePosition(newNodePos);\r\n if (this.getLayer()) {\r\n this.getLayer().batchDraw();\r\n }\r\n else if (this.getStage()) {\r\n this.getStage().batchDraw();\r\n }\r\n }\r\n this._lastPos = newNodePos;\r\n };\r\n /**\r\n * stop drag and drop\r\n * @method\r\n * @name Konva.Node#stopDrag\r\n */\r\n Node.prototype.stopDrag = function (evt) {\r\n var elem = DD._dragElements.get(this._id);\r\n if (elem) {\r\n elem.dragStatus = 'stopped';\r\n }\r\n DD._endDragBefore(evt);\r\n DD._endDragAfter(evt);\r\n };\r\n Node.prototype.setDraggable = function (draggable) {\r\n this._setAttr('draggable', draggable);\r\n this._dragChange();\r\n };\r\n /**\r\n * determine if node is currently in drag and drop mode\r\n * @method\r\n * @name Konva.Node#isDragging\r\n */\r\n Node.prototype.isDragging = function () {\r\n var elem = DD._dragElements.get(this._id);\r\n return elem ? elem.dragStatus === 'dragging' : false;\r\n };\r\n Node.prototype._listenDrag = function () {\r\n this._dragCleanup();\r\n this.on('mousedown.konva touchstart.konva', function (evt) {\r\n var _this = this;\r\n var shouldCheckButton = evt.evt['button'] !== undefined;\r\n var canDrag = !shouldCheckButton || Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\r\n if (!canDrag) {\r\n return;\r\n }\r\n if (this.isDragging()) {\r\n return;\r\n }\r\n var hasDraggingChild = false;\r\n DD._dragElements.forEach(function (elem) {\r\n if (_this.isAncestorOf(elem.node)) {\r\n hasDraggingChild = true;\r\n }\r\n });\r\n // nested drag can be started\r\n // in that case we don't need to start new drag\r\n if (!hasDraggingChild) {\r\n this._createDragElement(evt);\r\n }\r\n });\r\n };\r\n Node.prototype._dragChange = function () {\r\n if (this.attrs.draggable) {\r\n this._listenDrag();\r\n }\r\n else {\r\n // remove event listeners\r\n this._dragCleanup();\r\n /*\r\n * force drag and drop to end\r\n * if this node is currently in\r\n * drag and drop mode\r\n */\r\n var stage = this.getStage();\r\n if (!stage) {\r\n return;\r\n }\r\n var dragElement = DD._dragElements.get(this._id);\r\n var isDragging = dragElement && dragElement.dragStatus === 'dragging';\r\n var isReady = dragElement && dragElement.dragStatus === 'ready';\r\n if (isDragging) {\r\n this.stopDrag();\r\n }\r\n else if (isReady) {\r\n DD._dragElements.delete(this._id);\r\n }\r\n }\r\n };\r\n Node.prototype._dragCleanup = function () {\r\n this.off('mousedown.konva');\r\n this.off('touchstart.konva');\r\n };\r\n /**\r\n * create node with JSON string or an Object. De-serializtion does not generate custom\r\n * shape drawing functions, images, or event handlers (this would make the\r\n * serialized object huge). If your app uses custom shapes, images, and\r\n * event handlers (it probably does), then you need to select the appropriate\r\n * shapes after loading the stage and set these properties via on(), setSceneFunc(),\r\n * and setImage() methods\r\n * @method\r\n * @memberof Konva.Node\r\n * @param {String|Object} json string or object\r\n * @param {Element} [container] optional container dom element used only if you're\r\n * creating a stage node\r\n */\r\n Node.create = function (data, container) {\r\n if (Util._isString(data)) {\r\n data = JSON.parse(data);\r\n }\r\n return this._createNode(data, container);\r\n };\r\n Node._createNode = function (obj, container) {\r\n var className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\r\n // if container was passed in, add it to attrs\r\n if (container) {\r\n obj.attrs.container = container;\r\n }\r\n if (!_NODES_REGISTRY[className]) {\r\n Util.warn('Can not find a node with class name \"' +\r\n className +\r\n '\". Fallback to \"Shape\".');\r\n className = 'Shape';\r\n }\r\n var Class = _NODES_REGISTRY[className];\r\n no = new Class(obj.attrs);\r\n if (children) {\r\n len = children.length;\r\n for (n = 0; n < len; n++) {\r\n no.add(Node._createNode(children[n]));\r\n }\r\n }\r\n return no;\r\n };\r\n return Node;\r\n }());\r\n Node.prototype.nodeType = 'Node';\r\n Node.prototype._attrsAffectingSize = [];\r\n // attache events listeners once into prototype\r\n // that way we don't spend too much time on making an new instance\r\n Node.prototype.eventListeners = {};\r\n Node.prototype.on.call(Node.prototype, TRANSFORM_CHANGE_STR, function () {\r\n if (this._batchingTransformChange) {\r\n this._needClearTransformCache = true;\r\n return;\r\n }\r\n this._clearCache(TRANSFORM);\r\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\r\n });\r\n Node.prototype.on.call(Node.prototype, 'visibleChange.konva', function () {\r\n this._clearSelfAndDescendantCache(VISIBLE);\r\n });\r\n Node.prototype.on.call(Node.prototype, 'listeningChange.konva', function () {\r\n this._clearSelfAndDescendantCache(LISTENING);\r\n });\r\n Node.prototype.on.call(Node.prototype, 'opacityChange.konva', function () {\r\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\r\n });\r\n var addGetterSetter = Factory.addGetterSetter;\r\n /**\r\n * get/set zIndex relative to the node's siblings who share the same parent.\r\n * Please remember that zIndex is not absolute (like in CSS). It is relative to parent element only.\r\n * @name Konva.Node#zIndex\r\n * @method\r\n * @param {Number} index\r\n * @returns {Number}\r\n * @example\r\n * // get index\r\n * var index = node.zIndex();\r\n *\r\n * // set index\r\n * node.zIndex(2);\r\n */\r\n addGetterSetter(Node, 'zIndex');\r\n /**\r\n * get/set node absolute position\r\n * @name Konva.Node#absolutePosition\r\n * @method\r\n * @param {Object} pos\r\n * @param {Number} pos.x\r\n * @param {Number} pos.y\r\n * @returns {Object}\r\n * @example\r\n * // get position\r\n * var position = node.absolutePosition();\r\n *\r\n * // set position\r\n * node.absolutePosition({\r\n * x: 5,\r\n * y: 10\r\n * });\r\n */\r\n addGetterSetter(Node, 'absolutePosition');\r\n addGetterSetter(Node, 'position');\r\n /**\r\n * get/set node position relative to parent\r\n * @name Konva.Node#position\r\n * @method\r\n * @param {Object} pos\r\n * @param {Number} pos.x\r\n * @param {Number} pos.y\r\n * @returns {Object}\r\n * @example\r\n * // get position\r\n * var position = node.position();\r\n *\r\n * // set position\r\n * node.position({\r\n * x: 5,\r\n * y: 10\r\n * });\r\n */\r\n addGetterSetter(Node, 'x', 0, getNumberValidator());\r\n /**\r\n * get/set x position\r\n * @name Konva.Node#x\r\n * @method\r\n * @param {Number} x\r\n * @returns {Object}\r\n * @example\r\n * // get x\r\n * var x = node.x();\r\n *\r\n * // set x\r\n * node.x(5);\r\n */\r\n addGetterSetter(Node, 'y', 0, getNumberValidator());\r\n /**\r\n * get/set y position\r\n * @name Konva.Node#y\r\n * @method\r\n * @param {Number} y\r\n * @returns {Integer}\r\n * @example\r\n * // get y\r\n * var y = node.y();\r\n *\r\n * // set y\r\n * node.y(5);\r\n */\r\n addGetterSetter(Node, 'globalCompositeOperation', 'source-over', getStringValidator());\r\n /**\r\n * get/set globalCompositeOperation of a shape\r\n * @name Konva.Node#globalCompositeOperation\r\n * @method\r\n * @param {String} type\r\n * @returns {String}\r\n * @example\r\n * // get globalCompositeOperation\r\n * var globalCompositeOperation = shape.globalCompositeOperation();\r\n *\r\n * // set globalCompositeOperation\r\n * shape.globalCompositeOperation('source-in');\r\n */\r\n addGetterSetter(Node, 'opacity', 1, getNumberValidator());\r\n /**\r\n * get/set opacity. Opacity values range from 0 to 1.\r\n * A node with an opacity of 0 is fully transparent, and a node\r\n * with an opacity of 1 is fully opaque\r\n * @name Konva.Node#opacity\r\n * @method\r\n * @param {Object} opacity\r\n * @returns {Number}\r\n * @example\r\n * // get opacity\r\n * var opacity = node.opacity();\r\n *\r\n * // set opacity\r\n * node.opacity(0.5);\r\n */\r\n addGetterSetter(Node, 'name', '', getStringValidator());\r\n /**\r\n * get/set name\r\n * @name Konva.Node#name\r\n * @method\r\n * @param {String} name\r\n * @returns {String}\r\n * @example\r\n * // get name\r\n * var name = node.name();\r\n *\r\n * // set name\r\n * node.name('foo');\r\n *\r\n * // also node may have multiple names (as css classes)\r\n * node.name('foo bar');\r\n */\r\n addGetterSetter(Node, 'id', '', getStringValidator());\r\n /**\r\n * get/set id. Id is global for whole page.\r\n * @name Konva.Node#id\r\n * @method\r\n * @param {String} id\r\n * @returns {String}\r\n * @example\r\n * // get id\r\n * var name = node.id();\r\n *\r\n * // set id\r\n * node.id('foo');\r\n */\r\n addGetterSetter(Node, 'rotation', 0, getNumberValidator());\r\n /**\r\n * get/set rotation in degrees\r\n * @name Konva.Node#rotation\r\n * @method\r\n * @param {Number} rotation\r\n * @returns {Number}\r\n * @example\r\n * // get rotation in degrees\r\n * var rotation = node.rotation();\r\n *\r\n * // set rotation in degrees\r\n * node.rotation(45);\r\n */\r\n Factory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\r\n /**\r\n * get/set scale\r\n * @name Konva.Node#scale\r\n * @param {Object} scale\r\n * @param {Number} scale.x\r\n * @param {Number} scale.y\r\n * @method\r\n * @returns {Object}\r\n * @example\r\n * // get scale\r\n * var scale = node.scale();\r\n *\r\n * // set scale\r\n * shape.scale({\r\n * x: 2,\r\n * y: 3\r\n * });\r\n */\r\n addGetterSetter(Node, 'scaleX', 1, getNumberValidator());\r\n /**\r\n * get/set scale x\r\n * @name Konva.Node#scaleX\r\n * @param {Number} x\r\n * @method\r\n * @returns {Number}\r\n * @example\r\n * // get scale x\r\n * var scaleX = node.scaleX();\r\n *\r\n * // set scale x\r\n * node.scaleX(2);\r\n */\r\n addGetterSetter(Node, 'scaleY', 1, getNumberValidator());\r\n /**\r\n * get/set scale y\r\n * @name Konva.Node#scaleY\r\n * @param {Number} y\r\n * @method\r\n * @returns {Number}\r\n * @example\r\n * // get scale y\r\n * var scaleY = node.scaleY();\r\n *\r\n * // set scale y\r\n * node.scaleY(2);\r\n */\r\n Factory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\r\n /**\r\n * get/set skew\r\n * @name Konva.Node#skew\r\n * @param {Object} skew\r\n * @param {Number} skew.x\r\n * @param {Number} skew.y\r\n * @method\r\n * @returns {Object}\r\n * @example\r\n * // get skew\r\n * var skew = node.skew();\r\n *\r\n * // set skew\r\n * node.skew({\r\n * x: 20,\r\n * y: 10\r\n * });\r\n */\r\n addGetterSetter(Node, 'skewX', 0, getNumberValidator());\r\n /**\r\n * get/set skew x\r\n * @name Konva.Node#skewX\r\n * @param {Number} x\r\n * @method\r\n * @returns {Number}\r\n * @example\r\n * // get skew x\r\n * var skewX = node.skewX();\r\n *\r\n * // set skew x\r\n * node.skewX(3);\r\n */\r\n addGetterSetter(Node, 'skewY', 0, getNumberValidator());\r\n /**\r\n * get/set skew y\r\n * @name Konva.Node#skewY\r\n * @param {Number} y\r\n * @method\r\n * @returns {Number}\r\n * @example\r\n * // get skew y\r\n * var skewY = node.skewY();\r\n *\r\n * // set skew y\r\n * node.skewY(3);\r\n */\r\n Factory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\r\n /**\r\n * get/set offset. Offsets the default position and rotation point\r\n * @method\r\n * @param {Object} offset\r\n * @param {Number} offset.x\r\n * @param {Number} offset.y\r\n * @returns {Object}\r\n * @example\r\n * // get offset\r\n * var offset = node.offset();\r\n *\r\n * // set offset\r\n * node.offset({\r\n * x: 20,\r\n * y: 10\r\n * });\r\n */\r\n addGetterSetter(Node, 'offsetX', 0, getNumberValidator());\r\n /**\r\n * get/set offset x\r\n * @name Konva.Node#offsetX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get offset x\r\n * var offsetX = node.offsetX();\r\n *\r\n * // set offset x\r\n * node.offsetX(3);\r\n */\r\n addGetterSetter(Node, 'offsetY', 0, getNumberValidator());\r\n /**\r\n * get/set offset y\r\n * @name Konva.Node#offsetY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get offset y\r\n * var offsetY = node.offsetY();\r\n *\r\n * // set offset y\r\n * node.offsetY(3);\r\n */\r\n addGetterSetter(Node, 'dragDistance', null, getNumberValidator());\r\n /**\r\n * get/set drag distance\r\n * @name Konva.Node#dragDistance\r\n * @method\r\n * @param {Number} distance\r\n * @returns {Number}\r\n * @example\r\n * // get drag distance\r\n * var dragDistance = node.dragDistance();\r\n *\r\n * // set distance\r\n * // node starts dragging only if pointer moved more then 3 pixels\r\n * node.dragDistance(3);\r\n * // or set globally\r\n * Konva.dragDistance = 3;\r\n */\r\n addGetterSetter(Node, 'width', 0, getNumberValidator());\r\n /**\r\n * get/set width\r\n * @name Konva.Node#width\r\n * @method\r\n * @param {Number} width\r\n * @returns {Number}\r\n * @example\r\n * // get width\r\n * var width = node.width();\r\n *\r\n * // set width\r\n * node.width(100);\r\n */\r\n addGetterSetter(Node, 'height', 0, getNumberValidator());\r\n /**\r\n * get/set height\r\n * @name Konva.Node#height\r\n * @method\r\n * @param {Number} height\r\n * @returns {Number}\r\n * @example\r\n * // get height\r\n * var height = node.height();\r\n *\r\n * // set height\r\n * node.height(100);\r\n */\r\n addGetterSetter(Node, 'listening', true, getBooleanValidator());\r\n /**\r\n * get/set listening attr. If you need to determine if a node is listening or not\r\n * by taking into account its parents, use the isListening() method\r\n * @name Konva.Node#listening\r\n * @method\r\n * @param {Boolean} listening Can be true, or false. The default is true.\r\n * @returns {Boolean}\r\n * @example\r\n * // get listening attr\r\n * var listening = node.listening();\r\n *\r\n * // stop listening for events, remove node and all its children from hit graph\r\n * node.listening(false);\r\n *\r\n * // listen to events according to the parent\r\n * node.listening(true);\r\n */\r\n /**\r\n * get/set preventDefault\r\n * By default all shapes will prevent default behavior\r\n * of a browser on a pointer move or tap.\r\n * that will prevent native scrolling when you are trying to drag&drop a node\r\n * but sometimes you may need to enable default actions\r\n * in that case you can set the property to false\r\n * @name Konva.Node#preventDefault\r\n * @method\r\n * @param {Boolean} preventDefault\r\n * @returns {Boolean}\r\n * @example\r\n * // get preventDefault\r\n * var shouldPrevent = shape.preventDefault();\r\n *\r\n * // set preventDefault\r\n * shape.preventDefault(false);\r\n */\r\n addGetterSetter(Node, 'preventDefault', true, getBooleanValidator());\r\n addGetterSetter(Node, 'filters', null, function (val) {\r\n this._filterUpToDate = false;\r\n return val;\r\n });\r\n /**\r\n * get/set filters. Filters are applied to cached canvases\r\n * @name Konva.Node#filters\r\n * @method\r\n * @param {Array} filters array of filters\r\n * @returns {Array}\r\n * @example\r\n * // get filters\r\n * var filters = node.filters();\r\n *\r\n * // set a single filter\r\n * node.cache();\r\n * node.filters([Konva.Filters.Blur]);\r\n *\r\n * // set multiple filters\r\n * node.cache();\r\n * node.filters([\r\n * Konva.Filters.Blur,\r\n * Konva.Filters.Sepia,\r\n * Konva.Filters.Invert\r\n * ]);\r\n */\r\n addGetterSetter(Node, 'visible', true, getBooleanValidator());\r\n /**\r\n * get/set visible attr. Can be true, or false. The default is true.\r\n * If you need to determine if a node is visible or not\r\n * by taking into account its parents, use the isVisible() method\r\n * @name Konva.Node#visible\r\n * @method\r\n * @param {Boolean} visible\r\n * @returns {Boolean}\r\n * @example\r\n * // get visible attr\r\n * var visible = node.visible();\r\n *\r\n * // make invisible\r\n * node.visible(false);\r\n *\r\n * // make visible (according to the parent)\r\n * node.visible(true);\r\n *\r\n */\r\n addGetterSetter(Node, 'transformsEnabled', 'all', getStringValidator());\r\n /**\r\n * get/set transforms that are enabled. Can be \"all\", \"none\", or \"position\". The default\r\n * is \"all\"\r\n * @name Konva.Node#transformsEnabled\r\n * @method\r\n * @param {String} enabled\r\n * @returns {String}\r\n * @example\r\n * // enable position transform only to improve draw performance\r\n * node.transformsEnabled('position');\r\n *\r\n * // enable all transforms\r\n * node.transformsEnabled('all');\r\n */\r\n /**\r\n * get/set node size\r\n * @name Konva.Node#size\r\n * @method\r\n * @param {Object} size\r\n * @param {Number} size.width\r\n * @param {Number} size.height\r\n * @returns {Object}\r\n * @example\r\n * // get node size\r\n * var size = node.size();\r\n * var x = size.x;\r\n * var y = size.y;\r\n *\r\n * // set size\r\n * node.size({\r\n * width: 100,\r\n * height: 200\r\n * });\r\n */\r\n addGetterSetter(Node, 'size');\r\n /**\r\n * get/set drag bound function. This is used to override the default\r\n * drag and drop position.\r\n * @name Konva.Node#dragBoundFunc\r\n * @method\r\n * @param {Function} dragBoundFunc\r\n * @returns {Function}\r\n * @example\r\n * // get drag bound function\r\n * var dragBoundFunc = node.dragBoundFunc();\r\n *\r\n * // create vertical drag and drop\r\n * node.dragBoundFunc(function(pos){\r\n * // important pos - is absolute position of the node\r\n * // you should return absolute position too\r\n * return {\r\n * x: this.absolutePosition().x,\r\n * y: pos.y\r\n * };\r\n * });\r\n */\r\n addGetterSetter(Node, 'dragBoundFunc');\r\n /**\r\n * get/set draggable flag\r\n * @name Konva.Node#draggable\r\n * @method\r\n * @param {Boolean} draggable\r\n * @returns {Boolean}\r\n * @example\r\n * // get draggable flag\r\n * var draggable = node.draggable();\r\n *\r\n * // enable drag and drop\r\n * node.draggable(true);\r\n *\r\n * // disable drag and drop\r\n * node.draggable(false);\r\n */\r\n addGetterSetter(Node, 'draggable', false, getBooleanValidator());\r\n Factory.backCompat(Node, {\r\n rotateDeg: 'rotate',\r\n setRotationDeg: 'setRotation',\r\n getRotationDeg: 'getRotation',\r\n });\r\n Collection.mapMethods(Node);\n\n /**\r\n * Container constructor.  Containers are used to contain nodes or other containers\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Node\r\n * @abstract\r\n * @param {Object} config\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * * @param {Object} [config.clip] set clip\n * @param {Number} [config.clipX] set clip x\n * @param {Number} [config.clipY] set clip y\n * @param {Number} [config.clipWidth] set clip width\n * @param {Number} [config.clipHeight] set clip height\n * @param {Function} [config.clipFunc] set clip func\n\r\n */\r\n var Container = /** @class */ (function (_super) {\r\n __extends(Container, _super);\r\n function Container() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.children = new Collection();\r\n return _this;\r\n }\r\n /**\r\n * returns a {@link Konva.Collection} of direct descendant nodes\r\n * @method\r\n * @name Konva.Container#getChildren\r\n * @param {Function} [filterFunc] filter function\r\n * @returns {Konva.Collection}\r\n * @example\r\n * // get all children\r\n * var children = layer.getChildren();\r\n *\r\n * // get only circles\r\n * var circles = layer.getChildren(function(node){\r\n * return node.getClassName() === 'Circle';\r\n * });\r\n */\r\n Container.prototype.getChildren = function (filterFunc) {\r\n if (!filterFunc) {\r\n return this.children;\r\n }\r\n var results = new Collection();\r\n this.children.each(function (child) {\r\n if (filterFunc(child)) {\r\n results.push(child);\r\n }\r\n });\r\n return results;\r\n };\r\n /**\r\n * determine if node has children\r\n * @method\r\n * @name Konva.Container#hasChildren\r\n * @returns {Boolean}\r\n */\r\n Container.prototype.hasChildren = function () {\r\n return this.getChildren().length > 0;\r\n };\r\n /**\r\n * remove all children. Children will be still in memory.\r\n * If you want to completely destroy all children please use \"destroyChildren\" method instead\r\n * @method\r\n * @name Konva.Container#removeChildren\r\n */\r\n Container.prototype.removeChildren = function () {\r\n var child;\r\n for (var i = 0; i < this.children.length; i++) {\r\n child = this.children[i];\r\n // reset parent to prevent many _setChildrenIndices calls\r\n child.parent = null;\r\n child.index = 0;\r\n child.remove();\r\n }\r\n this.children = new Collection();\r\n return this;\r\n };\r\n /**\r\n * destroy all children nodes.\r\n * @method\r\n * @name Konva.Container#destroyChildren\r\n */\r\n Container.prototype.destroyChildren = function () {\r\n var child;\r\n for (var i = 0; i < this.children.length; i++) {\r\n child = this.children[i];\r\n // reset parent to prevent many _setChildrenIndices calls\r\n child.parent = null;\r\n child.index = 0;\r\n child.destroy();\r\n }\r\n this.children = new Collection();\r\n return this;\r\n };\r\n /**\r\n * add a child and children into container\r\n * @name Konva.Container#add\r\n * @method\r\n * @param {...Konva.Node} child\r\n * @returns {Container}\r\n * @example\r\n * layer.add(rect);\r\n * layer.add(shape1, shape2, shape3);\r\n * // remember to redraw layer if you changed something\r\n * layer.draw();\r\n */\r\n Container.prototype.add = function () {\r\n var children = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n children[_i] = arguments[_i];\r\n }\r\n if (arguments.length > 1) {\r\n for (var i = 0; i < arguments.length; i++) {\r\n this.add(arguments[i]);\r\n }\r\n return this;\r\n }\r\n var child = children[0];\r\n if (child.getParent()) {\r\n child.moveTo(this);\r\n return this;\r\n }\r\n var _children = this.children;\r\n this._validateAdd(child);\r\n child._clearCaches();\r\n child.index = _children.length;\r\n child.parent = this;\r\n _children.push(child);\r\n this._fire('add', {\r\n child: child,\r\n });\r\n // chainable\r\n return this;\r\n };\r\n Container.prototype.destroy = function () {\r\n if (this.hasChildren()) {\r\n this.destroyChildren();\r\n }\r\n _super.prototype.destroy.call(this);\r\n return this;\r\n };\r\n /**\r\n * return a {@link Konva.Collection} of nodes that match the selector.\r\n * You can provide a string with '#' for id selections and '.' for name selections.\r\n * Or a function that will return true/false when a node is passed through. See example below.\r\n * With strings you can also select by type or class name. Pass multiple selectors\r\n * separated by a space.\r\n * @method\r\n * @name Konva.Container#find\r\n * @param {String | Function} selector\r\n * @returns {Collection}\r\n * @example\r\n *\r\n * Passing a string as a selector\r\n * // select node with id foo\r\n * var node = stage.find('#foo');\r\n *\r\n * // select nodes with name bar inside layer\r\n * var nodes = layer.find('.bar');\r\n *\r\n * // select all groups inside layer\r\n * var nodes = layer.find('Group');\r\n *\r\n * // select all rectangles inside layer\r\n * var nodes = layer.find('Rect');\r\n *\r\n * // select node with an id of foo or a name of bar inside layer\r\n * var nodes = layer.find('#foo, .bar');\r\n *\r\n * Passing a function as a selector\r\n *\r\n * // get all groups with a function\r\n * var groups = stage.find(node => {\r\n * return node.getType() === 'Group';\r\n * });\r\n *\r\n * // get only Nodes with partial opacity\r\n * var alphaNodes = layer.find(node => {\r\n * return node.getType() === 'Node' && node.getAbsoluteOpacity() < 1;\r\n * });\r\n */\r\n Container.prototype.find = function (selector) {\r\n // protecting _generalFind to prevent user from accidentally adding\r\n // second argument and getting unexpected `findOne` result\r\n return this._generalFind(selector, false);\r\n };\r\n Container.prototype.get = function (selector) {\r\n Util.warn('collection.get() method is deprecated. Please use collection.find() instead.');\r\n return this.find(selector);\r\n };\r\n /**\r\n * return a first node from `find` method\r\n * @method\r\n * @name Konva.Container#findOne\r\n * @param {String | Function} selector\r\n * @returns {Konva.Node | Undefined}\r\n * @example\r\n * // select node with id foo\r\n * var node = stage.findOne('#foo');\r\n *\r\n * // select node with name bar inside layer\r\n * var nodes = layer.findOne('.bar');\r\n *\r\n * // select the first node to return true in a function\r\n * var node = stage.findOne(node => {\r\n * return node.getType() === 'Shape'\r\n * })\r\n */\r\n Container.prototype.findOne = function (selector) {\r\n var result = this._generalFind(selector, true);\r\n return result.length > 0 ? result[0] : undefined;\r\n };\r\n Container.prototype._generalFind = function (selector, findOne) {\r\n var retArr = [];\r\n this._descendants(function (node) {\r\n var valid = node._isMatch(selector);\r\n if (valid) {\r\n retArr.push(node);\r\n }\r\n if (valid && findOne) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n return Collection.toCollection(retArr);\r\n };\r\n Container.prototype._descendants = function (fn) {\r\n var shouldStop = false;\r\n for (var i = 0; i < this.children.length; i++) {\r\n var child = this.children[i];\r\n shouldStop = fn(child);\r\n if (shouldStop) {\r\n return true;\r\n }\r\n if (!child.hasChildren()) {\r\n continue;\r\n }\r\n shouldStop = child._descendants(fn);\r\n if (shouldStop) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n // extenders\r\n Container.prototype.toObject = function () {\r\n var obj = Node.prototype.toObject.call(this);\r\n obj.children = [];\r\n var children = this.getChildren();\r\n var len = children.length;\r\n for (var n = 0; n < len; n++) {\r\n var child = children[n];\r\n obj.children.push(child.toObject());\r\n }\r\n return obj;\r\n };\r\n /**\r\n * determine if node is an ancestor\r\n * of descendant\r\n * @method\r\n * @name Konva.Container#isAncestorOf\r\n * @param {Konva.Node} node\r\n */\r\n Container.prototype.isAncestorOf = function (node) {\r\n var parent = node.getParent();\r\n while (parent) {\r\n if (parent._id === this._id) {\r\n return true;\r\n }\r\n parent = parent.getParent();\r\n }\r\n return false;\r\n };\r\n Container.prototype.clone = function (obj) {\r\n // call super method\r\n var node = Node.prototype.clone.call(this, obj);\r\n this.getChildren().each(function (no) {\r\n node.add(no.clone());\r\n });\r\n return node;\r\n };\r\n /**\r\n * get all shapes that intersect a point. Note: because this method must clear a temporary\r\n * canvas and redraw every shape inside the container, it should only be used for special situations\r\n * because it performs very poorly. Please use the {@link Konva.Stage#getIntersection} method if at all possible\r\n * because it performs much better\r\n * @method\r\n * @name Konva.Container#getAllIntersections\r\n * @param {Object} pos\r\n * @param {Number} pos.x\r\n * @param {Number} pos.y\r\n * @returns {Array} array of shapes\r\n */\r\n Container.prototype.getAllIntersections = function (pos) {\r\n var arr = [];\r\n this.find('Shape').each(function (shape) {\r\n if (shape.isVisible() && shape.intersects(pos)) {\r\n arr.push(shape);\r\n }\r\n });\r\n return arr;\r\n };\r\n Container.prototype._setChildrenIndices = function () {\r\n this.children.each(function (child, n) {\r\n child.index = n;\r\n });\r\n };\r\n Container.prototype.drawScene = function (can, top) {\r\n var layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\r\n var caching = canvas && canvas.isCache;\r\n if (!this.isVisible() && !caching) {\r\n return this;\r\n }\r\n if (cachedSceneCanvas) {\r\n context.save();\r\n var m = this.getAbsoluteTransform(top).getMatrix();\r\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\r\n this._drawCachedSceneCanvas(context);\r\n context.restore();\r\n }\r\n else {\r\n this._drawChildren('drawScene', canvas, top);\r\n }\r\n return this;\r\n };\r\n Container.prototype.drawHit = function (can, top) {\r\n if (!this.shouldDrawHit(top)) {\r\n return this;\r\n }\r\n var layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\r\n if (cachedHitCanvas) {\r\n context.save();\r\n var m = this.getAbsoluteTransform(top).getMatrix();\r\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\r\n this._drawCachedHitCanvas(context);\r\n context.restore();\r\n }\r\n else {\r\n this._drawChildren('drawHit', canvas, top);\r\n }\r\n return this;\r\n };\r\n Container.prototype._drawChildren = function (drawMethod, canvas, top) {\r\n var context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (clipWidth && clipHeight) || clipFunc;\r\n var selfCache = top === this;\r\n if (hasClip) {\r\n context.save();\r\n var transform = this.getAbsoluteTransform(top);\r\n var m = transform.getMatrix();\r\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\r\n context.beginPath();\r\n if (clipFunc) {\r\n clipFunc.call(this, context, this);\r\n }\r\n else {\r\n var clipX = this.clipX();\r\n var clipY = this.clipY();\r\n context.rect(clipX, clipY, clipWidth, clipHeight);\r\n }\r\n context.clip();\r\n m = transform.copy().invert().getMatrix();\r\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\r\n }\r\n var hasComposition = !selfCache &&\r\n this.globalCompositeOperation() !== 'source-over' &&\r\n drawMethod === 'drawScene';\r\n if (hasComposition) {\r\n context.save();\r\n context._applyGlobalCompositeOperation(this);\r\n }\r\n this.children.each(function (child) {\r\n child[drawMethod](canvas, top);\r\n });\r\n if (hasComposition) {\r\n context.restore();\r\n }\r\n if (hasClip) {\r\n context.restore();\r\n }\r\n };\r\n Container.prototype.getClientRect = function (config) {\r\n config = config || {};\r\n var skipTransform = config.skipTransform;\r\n var relativeTo = config.relativeTo;\r\n var minX, minY, maxX, maxY;\r\n var selfRect = {\r\n x: Infinity,\r\n y: Infinity,\r\n width: 0,\r\n height: 0,\r\n };\r\n var that = this;\r\n this.children.each(function (child) {\r\n // skip invisible children\r\n if (!child.visible()) {\r\n return;\r\n }\r\n var rect = child.getClientRect({\r\n relativeTo: that,\r\n skipShadow: config.skipShadow,\r\n skipStroke: config.skipStroke,\r\n });\r\n // skip invisible children (like empty groups)\r\n if (rect.width === 0 && rect.height === 0) {\r\n return;\r\n }\r\n if (minX === undefined) {\r\n // initial value for first child\r\n minX = rect.x;\r\n minY = rect.y;\r\n maxX = rect.x + rect.width;\r\n maxY = rect.y + rect.height;\r\n }\r\n else {\r\n minX = Math.min(minX, rect.x);\r\n minY = Math.min(minY, rect.y);\r\n maxX = Math.max(maxX, rect.x + rect.width);\r\n maxY = Math.max(maxY, rect.y + rect.height);\r\n }\r\n });\r\n // if child is group we need to make sure it has visible shapes inside\r\n var shapes = this.find('Shape');\r\n var hasVisible = false;\r\n for (var i = 0; i < shapes.length; i++) {\r\n var shape = shapes[i];\r\n if (shape._isVisible(this)) {\r\n hasVisible = true;\r\n break;\r\n }\r\n }\r\n if (hasVisible && minX !== undefined) {\r\n selfRect = {\r\n x: minX,\r\n y: minY,\r\n width: maxX - minX,\r\n height: maxY - minY,\r\n };\r\n }\r\n else {\r\n selfRect = {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0,\r\n };\r\n }\r\n if (!skipTransform) {\r\n return this._transformedRect(selfRect, relativeTo);\r\n }\r\n return selfRect;\r\n };\r\n return Container;\r\n }(Node));\r\n // add getters setters\r\n Factory.addComponentsGetterSetter(Container, 'clip', [\r\n 'x',\r\n 'y',\r\n 'width',\r\n 'height',\r\n ]);\r\n /**\r\n * get/set clip\r\n * @method\r\n * @name Konva.Container#clip\r\n * @param {Object} clip\r\n * @param {Number} clip.x\r\n * @param {Number} clip.y\r\n * @param {Number} clip.width\r\n * @param {Number} clip.height\r\n * @returns {Object}\r\n * @example\r\n * // get clip\r\n * var clip = container.clip();\r\n *\r\n * // set clip\r\n * container.clip({\r\n * x: 20,\r\n * y: 20,\r\n * width: 20,\r\n * height: 20\r\n * });\r\n */\r\n Factory.addGetterSetter(Container, 'clipX', undefined, getNumberValidator());\r\n /**\r\n * get/set clip x\r\n * @name Konva.Container#clipX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get clip x\r\n * var clipX = container.clipX();\r\n *\r\n * // set clip x\r\n * container.clipX(10);\r\n */\r\n Factory.addGetterSetter(Container, 'clipY', undefined, getNumberValidator());\r\n /**\r\n * get/set clip y\r\n * @name Konva.Container#clipY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get clip y\r\n * var clipY = container.clipY();\r\n *\r\n * // set clip y\r\n * container.clipY(10);\r\n */\r\n Factory.addGetterSetter(Container, 'clipWidth', undefined, getNumberValidator());\r\n /**\r\n * get/set clip width\r\n * @name Konva.Container#clipWidth\r\n * @method\r\n * @param {Number} width\r\n * @returns {Number}\r\n * @example\r\n * // get clip width\r\n * var clipWidth = container.clipWidth();\r\n *\r\n * // set clip width\r\n * container.clipWidth(100);\r\n */\r\n Factory.addGetterSetter(Container, 'clipHeight', undefined, getNumberValidator());\r\n /**\r\n * get/set clip height\r\n * @name Konva.Container#clipHeight\r\n * @method\r\n * @param {Number} height\r\n * @returns {Number}\r\n * @example\r\n * // get clip height\r\n * var clipHeight = container.clipHeight();\r\n *\r\n * // set clip height\r\n * container.clipHeight(100);\r\n */\r\n Factory.addGetterSetter(Container, 'clipFunc');\r\n /**\r\n * get/set clip function\r\n * @name Konva.Container#clipFunc\r\n * @method\r\n * @param {Function} function\r\n * @returns {Function}\r\n * @example\r\n * // get clip function\r\n * var clipFunction = container.clipFunc();\r\n *\r\n * // set clip height\r\n * container.clipFunc(function(ctx) {\r\n * ctx.rect(0, 0, 100, 100);\r\n * });\r\n */\r\n Collection.mapMethods(Container);\n\n var Captures = new Map();\r\n // we may use this module for capturing touch events too\r\n // so make sure we don't do something super specific to pointer\r\n var SUPPORT_POINTER_EVENTS = Konva._global['PointerEvent'] !== undefined;\r\n function getCapturedShape(pointerId) {\r\n return Captures.get(pointerId);\r\n }\r\n function createEvent(evt) {\r\n return {\r\n evt: evt,\r\n pointerId: evt.pointerId\r\n };\r\n }\r\n function hasPointerCapture(pointerId, shape) {\r\n return Captures.get(pointerId) === shape;\r\n }\r\n function setPointerCapture(pointerId, shape) {\r\n releaseCapture(pointerId);\r\n var stage = shape.getStage();\r\n if (!stage)\r\n return;\r\n Captures.set(pointerId, shape);\r\n if (SUPPORT_POINTER_EVENTS) {\r\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\r\n }\r\n }\r\n function releaseCapture(pointerId, target) {\r\n var shape = Captures.get(pointerId);\r\n if (!shape)\r\n return;\r\n var stage = shape.getStage();\r\n if (stage && stage.content) ;\r\n Captures.delete(pointerId);\r\n if (SUPPORT_POINTER_EVENTS) {\r\n shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\r\n }\r\n }\n\n // CONSTANTS\r\n var STAGE$1 = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE$1 = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER$1 = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', \r\n // TODO: add them into \"on\" method docs and into site docs\r\n POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', CONTEXTMENU = 'contextmenu', CLICK = 'click', DBL_CLICK = 'dblclick', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TAP = 'tap', DBL_TAP = 'dbltap', TOUCHMOVE = 'touchmove', WHEEL = 'wheel', CONTENT_MOUSEOUT = 'contentMouseout', CONTENT_MOUSEOVER = 'contentMouseover', CONTENT_MOUSEMOVE = 'contentMousemove', CONTENT_MOUSEDOWN = 'contentMousedown', CONTENT_MOUSEUP = 'contentMouseup', CONTENT_CONTEXTMENU = 'contentContextmenu', CONTENT_CLICK = 'contentClick', CONTENT_DBL_CLICK = 'contentDblclick', CONTENT_TOUCHSTART = 'contentTouchstart', CONTENT_TOUCHEND = 'contentTouchend', CONTENT_DBL_TAP = 'contentDbltap', CONTENT_TAP = 'contentTap', CONTENT_TOUCHMOVE = 'contentTouchmove', CONTENT_WHEEL = 'contentWheel', RELATIVE = 'relative', KONVA_CONTENT = 'konvajs-content', UNDERSCORE = '_', CONTAINER = 'container', MAX_LAYERS_NUMBER = 5, EMPTY_STRING$1 = '', EVENTS = [\r\n MOUSEENTER$1,\r\n MOUSEDOWN,\r\n MOUSEMOVE,\r\n MOUSEUP,\r\n MOUSEOUT,\r\n TOUCHSTART,\r\n TOUCHMOVE,\r\n TOUCHEND,\r\n MOUSEOVER,\r\n WHEEL,\r\n CONTEXTMENU,\r\n POINTERDOWN,\r\n POINTERMOVE,\r\n POINTERUP,\r\n POINTERCANCEL,\r\n LOSTPOINTERCAPTURE,\r\n ], \r\n // cached variables\r\n eventsLength = EVENTS.length;\r\n function addEvent(ctx, eventName) {\r\n ctx.content.addEventListener(eventName, function (evt) {\r\n ctx[UNDERSCORE + eventName](evt);\r\n }, false);\r\n }\r\n var NO_POINTERS_MESSAGE = \"Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);\";\r\n var stages = [];\r\n function checkNoClip(attrs) {\r\n if (attrs === void 0) { attrs = {}; }\r\n if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\r\n Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\r\n }\r\n return attrs;\r\n }\r\n /**\r\n * Stage constructor. A stage is used to contain multiple layers\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Container\r\n * @param {Object} config\r\n * @param {String|Element} config.container Container selector or DOM element\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var stage = new Konva.Stage({\r\n * width: 500,\r\n * height: 800,\r\n * container: 'containerId' // or \"#containerId\" or \".containerClass\"\r\n * });\r\n */\r\n var Stage = /** @class */ (function (_super) {\r\n __extends(Stage, _super);\r\n function Stage(config) {\r\n var _this = _super.call(this, checkNoClip(config)) || this;\r\n _this._pointerPositions = [];\r\n _this._changedPointerPositions = [];\r\n _this._buildDOM();\r\n _this._bindContentEvents();\r\n stages.push(_this);\r\n _this.on('widthChange.konva heightChange.konva', _this._resizeDOM);\r\n _this.on('visibleChange.konva', _this._checkVisibility);\r\n _this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', function () {\r\n checkNoClip(_this.attrs);\r\n });\r\n _this._checkVisibility();\r\n return _this;\r\n }\r\n Stage.prototype._validateAdd = function (child) {\r\n var isLayer = child.getType() === 'Layer';\r\n var isFastLayer = child.getType() === 'FastLayer';\r\n var valid = isLayer || isFastLayer;\r\n if (!valid) {\r\n Util.throw('You may only add layers to the stage.');\r\n }\r\n };\r\n Stage.prototype._checkVisibility = function () {\r\n if (!this.content) {\r\n return;\r\n }\r\n var style = this.visible() ? '' : 'none';\r\n this.content.style.display = style;\r\n };\r\n /**\r\n * set container dom element which contains the stage wrapper div element\r\n * @method\r\n * @name Konva.Stage#setContainer\r\n * @param {DomElement} container can pass in a dom element or id string\r\n */\r\n Stage.prototype.setContainer = function (container) {\r\n if (typeof container === STRING) {\r\n if (container.charAt(0) === '.') {\r\n var className = container.slice(1);\r\n container = document.getElementsByClassName(className)[0];\r\n }\r\n else {\r\n var id;\r\n if (container.charAt(0) !== '#') {\r\n id = container;\r\n }\r\n else {\r\n id = container.slice(1);\r\n }\r\n container = document.getElementById(id);\r\n }\r\n if (!container) {\r\n throw 'Can not find container in document with id ' + id;\r\n }\r\n }\r\n this._setAttr(CONTAINER, container);\r\n if (this.content) {\r\n if (this.content.parentElement) {\r\n this.content.parentElement.removeChild(this.content);\r\n }\r\n container.appendChild(this.content);\r\n }\r\n return this;\r\n };\r\n Stage.prototype.shouldDrawHit = function () {\r\n return true;\r\n };\r\n /**\r\n * clear all layers\r\n * @method\r\n * @name Konva.Stage#clear\r\n */\r\n Stage.prototype.clear = function () {\r\n var layers = this.children, len = layers.length, n;\r\n for (n = 0; n < len; n++) {\r\n layers[n].clear();\r\n }\r\n return this;\r\n };\r\n Stage.prototype.clone = function (obj) {\r\n if (!obj) {\r\n obj = {};\r\n }\r\n obj.container = document.createElement('div');\r\n return Container.prototype.clone.call(this, obj);\r\n };\r\n Stage.prototype.destroy = function () {\r\n _super.prototype.destroy.call(this);\r\n var content = this.content;\r\n if (content && Util._isInDocument(content)) {\r\n this.container().removeChild(content);\r\n }\r\n var index = stages.indexOf(this);\r\n if (index > -1) {\r\n stages.splice(index, 1);\r\n }\r\n return this;\r\n };\r\n /**\r\n * returns absolute pointer position which can be a touch position or mouse position\r\n * pointer position doesn't include any transforms (such as scale) of the stage\r\n * it is just a plain position of pointer relative to top-left corner of the stage container\r\n * @method\r\n * @name Konva.Stage#getPointerPosition\r\n * @returns {Vector2d|null}\r\n */\r\n Stage.prototype.getPointerPosition = function () {\r\n var pos = this._pointerPositions[0] || this._changedPointerPositions[0];\r\n if (!pos) {\r\n Util.warn(NO_POINTERS_MESSAGE);\r\n return null;\r\n }\r\n return {\r\n x: pos.x,\r\n y: pos.y,\r\n };\r\n };\r\n Stage.prototype._getPointerById = function (id) {\r\n return this._pointerPositions.find(function (p) { return p.id === id; });\r\n };\r\n Stage.prototype.getPointersPositions = function () {\r\n return this._pointerPositions;\r\n };\r\n Stage.prototype.getStage = function () {\r\n return this;\r\n };\r\n Stage.prototype.getContent = function () {\r\n return this.content;\r\n };\r\n Stage.prototype._toKonvaCanvas = function (config) {\r\n config = config || {};\r\n var x = config.x || 0, y = config.y || 0, canvas = new SceneCanvas({\r\n width: config.width || this.width(),\r\n height: config.height || this.height(),\r\n pixelRatio: config.pixelRatio || 1,\r\n }), _context = canvas.getContext()._context, layers = this.children;\r\n if (x || y) {\r\n _context.translate(-1 * x, -1 * y);\r\n }\r\n layers.each(function (layer) {\r\n if (!layer.isVisible()) {\r\n return;\r\n }\r\n var layerCanvas = layer._toKonvaCanvas(config);\r\n _context.drawImage(layerCanvas._canvas, x, y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\r\n });\r\n return canvas;\r\n };\r\n /**\r\n * get visible intersection shape. This is the preferred\r\n * method for determining if a point intersects a shape or not\r\n * @method\r\n * @name Konva.Stage#getIntersection\r\n * @param {Object} pos\r\n * @param {Number} pos.x\r\n * @param {Number} pos.y\r\n * @param {String} [selector]\r\n * @returns {Konva.Node}\r\n * @example\r\n * var shape = stage.getIntersection({x: 50, y: 50});\r\n * // or if you interested in shape parent:\r\n * var group = stage.getIntersection({x: 50, y: 50}, 'Group');\r\n */\r\n Stage.prototype.getIntersection = function (pos, selector) {\r\n if (!pos) {\r\n return null;\r\n }\r\n var layers = this.children, len = layers.length, end = len - 1, n, shape;\r\n for (n = end; n >= 0; n--) {\r\n shape = layers[n].getIntersection(pos, selector);\r\n if (shape) {\r\n return shape;\r\n }\r\n }\r\n return null;\r\n };\r\n Stage.prototype._resizeDOM = function () {\r\n var width = this.width();\r\n var height = this.height();\r\n if (this.content) {\r\n // set content dimensions\r\n this.content.style.width = width + PX;\r\n this.content.style.height = height + PX;\r\n }\r\n this.bufferCanvas.setSize(width, height);\r\n this.bufferHitCanvas.setSize(width, height);\r\n // set layer dimensions\r\n this.children.each(function (layer) {\r\n layer.setSize({ width: width, height: height });\r\n layer.draw();\r\n });\r\n };\r\n Stage.prototype.add = function (layer) {\r\n if (arguments.length > 1) {\r\n for (var i = 0; i < arguments.length; i++) {\r\n this.add(arguments[i]);\r\n }\r\n return this;\r\n }\r\n _super.prototype.add.call(this, layer);\r\n var length = this.children.length;\r\n if (length > MAX_LAYERS_NUMBER) {\r\n Util.warn('The stage has ' +\r\n length +\r\n ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\r\n }\r\n layer.setSize({ width: this.width(), height: this.height() });\r\n // draw layer and append canvas to container\r\n layer.draw();\r\n if (Konva.isBrowser) {\r\n this.content.appendChild(layer.canvas._canvas);\r\n }\r\n // chainable\r\n return this;\r\n };\r\n Stage.prototype.getParent = function () {\r\n return null;\r\n };\r\n Stage.prototype.getLayer = function () {\r\n return null;\r\n };\r\n Stage.prototype.hasPointerCapture = function (pointerId) {\r\n return hasPointerCapture(pointerId, this);\r\n };\r\n Stage.prototype.setPointerCapture = function (pointerId) {\r\n setPointerCapture(pointerId, this);\r\n };\r\n Stage.prototype.releaseCapture = function (pointerId) {\r\n releaseCapture(pointerId);\r\n };\r\n /**\r\n * returns a {@link Konva.Collection} of layers\r\n * @method\r\n * @name Konva.Stage#getLayers\r\n */\r\n Stage.prototype.getLayers = function () {\r\n return this.getChildren();\r\n };\r\n Stage.prototype._bindContentEvents = function () {\r\n if (!Konva.isBrowser) {\r\n return;\r\n }\r\n for (var n = 0; n < eventsLength; n++) {\r\n addEvent(this, EVENTS[n]);\r\n }\r\n };\r\n Stage.prototype._mouseenter = function (evt) {\r\n this.setPointersPositions(evt);\r\n this._fire(MOUSEENTER$1, { evt: evt, target: this, currentTarget: this });\r\n };\r\n Stage.prototype._mouseover = function (evt) {\r\n this.setPointersPositions(evt);\r\n this._fire(CONTENT_MOUSEOVER, { evt: evt });\r\n this._fire(MOUSEOVER, { evt: evt, target: this, currentTarget: this });\r\n };\r\n Stage.prototype._mouseout = function (evt) {\r\n var _a;\r\n this.setPointersPositions(evt);\r\n var targetShape = ((_a = this.targetShape) === null || _a === void 0 ? void 0 : _a.getStage()) ? this.targetShape : null;\r\n var eventsEnabled = !DD.isDragging || Konva.hitOnDragEnabled;\r\n if (targetShape && eventsEnabled) {\r\n targetShape._fireAndBubble(MOUSEOUT, { evt: evt });\r\n targetShape._fireAndBubble(MOUSELEAVE$1, { evt: evt });\r\n this._fire(MOUSELEAVE$1, { evt: evt, target: this, currentTarget: this });\r\n this.targetShape = null;\r\n }\r\n else if (eventsEnabled) {\r\n this._fire(MOUSELEAVE$1, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n });\r\n this._fire(MOUSEOUT, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n });\r\n }\r\n this.pointerPos = undefined;\r\n this._pointerPositions = [];\r\n this._fire(CONTENT_MOUSEOUT, { evt: evt });\r\n };\r\n Stage.prototype._mousemove = function (evt) {\r\n var _a;\r\n // workaround for mobile IE to force touch event when unhandled pointer event elevates into a mouse event\r\n if (Konva.UA.ieMobile) {\r\n return this._touchmove(evt);\r\n }\r\n this.setPointersPositions(evt);\r\n var pointerId = Util._getFirstPointerId(evt);\r\n var shape;\r\n var targetShape = ((_a = this.targetShape) === null || _a === void 0 ? void 0 : _a.getStage()) ? this.targetShape : null;\r\n var eventsEnabled = !DD.isDragging || Konva.hitOnDragEnabled;\r\n if (eventsEnabled) {\r\n shape = this.getIntersection(this.getPointerPosition());\r\n if (shape && shape.isListening()) {\r\n var differentTarget = targetShape !== shape;\r\n if (eventsEnabled && differentTarget) {\r\n if (targetShape) {\r\n targetShape._fireAndBubble(MOUSEOUT, { evt: evt, pointerId: pointerId }, shape);\r\n targetShape._fireAndBubble(MOUSELEAVE$1, { evt: evt, pointerId: pointerId }, shape);\r\n }\r\n shape._fireAndBubble(MOUSEOVER, { evt: evt, pointerId: pointerId }, targetShape);\r\n shape._fireAndBubble(MOUSEENTER$1, { evt: evt, pointerId: pointerId }, targetShape);\r\n shape._fireAndBubble(MOUSEMOVE, { evt: evt, pointerId: pointerId });\r\n this.targetShape = shape;\r\n }\r\n else {\r\n shape._fireAndBubble(MOUSEMOVE, { evt: evt, pointerId: pointerId });\r\n }\r\n }\r\n else {\r\n /*\r\n * if no shape was detected, clear target shape and try\r\n * to run mouseout from previous target shape\r\n */\r\n if (targetShape && eventsEnabled) {\r\n targetShape._fireAndBubble(MOUSEOUT, { evt: evt, pointerId: pointerId });\r\n targetShape._fireAndBubble(MOUSELEAVE$1, { evt: evt, pointerId: pointerId });\r\n this._fire(MOUSEOVER, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n pointerId: pointerId,\r\n });\r\n this.targetShape = null;\r\n }\r\n this._fire(MOUSEMOVE, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n pointerId: pointerId,\r\n });\r\n }\r\n // content event\r\n this._fire(CONTENT_MOUSEMOVE, { evt: evt });\r\n }\r\n // always call preventDefault for desktop events because some browsers\r\n // try to drag and drop the canvas element\r\n if (evt.cancelable) {\r\n evt.preventDefault();\r\n }\r\n };\r\n Stage.prototype._mousedown = function (evt) {\r\n // workaround for mobile IE to force touch event when unhandled pointer event elevates into a mouse event\r\n if (Konva.UA.ieMobile) {\r\n return this._touchstart(evt);\r\n }\r\n this.setPointersPositions(evt);\r\n var pointerId = Util._getFirstPointerId(evt);\r\n var shape = this.getIntersection(this.getPointerPosition());\r\n DD.justDragged = false;\r\n Konva.listenClickTap = true;\r\n if (shape && shape.isListening()) {\r\n this.clickStartShape = shape;\r\n shape._fireAndBubble(MOUSEDOWN, { evt: evt, pointerId: pointerId });\r\n }\r\n else {\r\n this._fire(MOUSEDOWN, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n pointerId: pointerId,\r\n });\r\n }\r\n // content event\r\n this._fire(CONTENT_MOUSEDOWN, { evt: evt });\r\n // Do not prevent default behavior, because it will prevent listening events outside of window iframe\r\n // we used preventDefault for disabling native drag&drop\r\n // but userSelect = none style will do the trick\r\n // if (evt.cancelable) {\r\n // evt.preventDefault();\r\n // }\r\n };\r\n Stage.prototype._mouseup = function (evt) {\r\n // workaround for mobile IE to force touch event when unhandled pointer event elevates into a mouse event\r\n if (Konva.UA.ieMobile) {\r\n return this._touchend(evt);\r\n }\r\n this.setPointersPositions(evt);\r\n var pointerId = Util._getFirstPointerId(evt);\r\n var shape = this.getIntersection(this.getPointerPosition()), clickStartShape = this.clickStartShape, clickEndShape = this.clickEndShape, fireDblClick = false;\r\n if (Konva.inDblClickWindow) {\r\n fireDblClick = true;\r\n clearTimeout(this.dblTimeout);\r\n // Konva.inDblClickWindow = false;\r\n }\r\n else if (!DD.justDragged) {\r\n // don't set inDblClickWindow after dragging\r\n Konva.inDblClickWindow = true;\r\n clearTimeout(this.dblTimeout);\r\n }\r\n this.dblTimeout = setTimeout(function () {\r\n Konva.inDblClickWindow = false;\r\n }, Konva.dblClickWindow);\r\n if (shape && shape.isListening()) {\r\n this.clickEndShape = shape;\r\n shape._fireAndBubble(MOUSEUP, { evt: evt, pointerId: pointerId });\r\n // detect if click or double click occurred\r\n if (Konva.listenClickTap &&\r\n clickStartShape &&\r\n clickStartShape._id === shape._id) {\r\n shape._fireAndBubble(CLICK, { evt: evt, pointerId: pointerId });\r\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\r\n shape._fireAndBubble(DBL_CLICK, { evt: evt, pointerId: pointerId });\r\n }\r\n }\r\n }\r\n else {\r\n this.clickEndShape = null;\r\n this._fire(MOUSEUP, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n pointerId: pointerId,\r\n });\r\n if (Konva.listenClickTap) {\r\n this._fire(CLICK, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n pointerId: pointerId,\r\n });\r\n }\r\n if (fireDblClick) {\r\n this._fire(DBL_CLICK, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n pointerId: pointerId,\r\n });\r\n }\r\n }\r\n // content events\r\n this._fire(CONTENT_MOUSEUP, { evt: evt });\r\n if (Konva.listenClickTap) {\r\n this._fire(CONTENT_CLICK, { evt: evt });\r\n if (fireDblClick) {\r\n this._fire(CONTENT_DBL_CLICK, { evt: evt });\r\n }\r\n }\r\n Konva.listenClickTap = false;\r\n // always call preventDefault for desktop events because some browsers\r\n // try to drag and drop the canvas element\r\n if (evt.cancelable) {\r\n evt.preventDefault();\r\n }\r\n };\r\n Stage.prototype._contextmenu = function (evt) {\r\n this.setPointersPositions(evt);\r\n var shape = this.getIntersection(this.getPointerPosition());\r\n if (shape && shape.isListening()) {\r\n shape._fireAndBubble(CONTEXTMENU, { evt: evt });\r\n }\r\n else {\r\n this._fire(CONTEXTMENU, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n });\r\n }\r\n this._fire(CONTENT_CONTEXTMENU, { evt: evt });\r\n };\r\n Stage.prototype._touchstart = function (evt) {\r\n var _this = this;\r\n this.setPointersPositions(evt);\r\n var triggeredOnShape = false;\r\n this._changedPointerPositions.forEach(function (pos) {\r\n var shape = _this.getIntersection(pos);\r\n Konva.listenClickTap = true;\r\n DD.justDragged = false;\r\n var hasShape = shape && shape.isListening();\r\n if (!hasShape) {\r\n return;\r\n }\r\n if (Konva.captureTouchEventsEnabled) {\r\n shape.setPointerCapture(pos.id);\r\n }\r\n _this.tapStartShape = shape;\r\n shape._fireAndBubble(TOUCHSTART, { evt: evt, pointerId: pos.id }, _this);\r\n triggeredOnShape = true;\r\n // only call preventDefault if the shape is listening for events\r\n if (shape.isListening() && shape.preventDefault() && evt.cancelable) {\r\n evt.preventDefault();\r\n }\r\n });\r\n if (!triggeredOnShape) {\r\n this._fire(TOUCHSTART, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n pointerId: this._changedPointerPositions[0].id,\r\n });\r\n }\r\n // content event\r\n this._fire(CONTENT_TOUCHSTART, { evt: evt });\r\n };\r\n Stage.prototype._touchmove = function (evt) {\r\n var _this = this;\r\n this.setPointersPositions(evt);\r\n var eventsEnabled = !DD.isDragging || Konva.hitOnDragEnabled;\r\n if (eventsEnabled) {\r\n var triggeredOnShape = false;\r\n var processedShapesIds = {};\r\n this._changedPointerPositions.forEach(function (pos) {\r\n var shape = getCapturedShape(pos.id) || _this.getIntersection(pos);\r\n var hasShape = shape && shape.isListening();\r\n if (!hasShape) {\r\n return;\r\n }\r\n if (processedShapesIds[shape._id]) {\r\n return;\r\n }\r\n processedShapesIds[shape._id] = true;\r\n shape._fireAndBubble(TOUCHMOVE, { evt: evt, pointerId: pos.id });\r\n triggeredOnShape = true;\r\n // only call preventDefault if the shape is listening for events\r\n if (shape.isListening() && shape.preventDefault() && evt.cancelable) {\r\n evt.preventDefault();\r\n }\r\n });\r\n if (!triggeredOnShape) {\r\n this._fire(TOUCHMOVE, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n pointerId: this._changedPointerPositions[0].id,\r\n });\r\n }\r\n this._fire(CONTENT_TOUCHMOVE, { evt: evt });\r\n }\r\n if (DD.isDragging && DD.node.preventDefault() && evt.cancelable) {\r\n evt.preventDefault();\r\n }\r\n };\r\n Stage.prototype._touchend = function (evt) {\r\n var _this = this;\r\n this.setPointersPositions(evt);\r\n var tapEndShape = this.tapEndShape, fireDblClick = false;\r\n if (Konva.inDblClickWindow) {\r\n fireDblClick = true;\r\n clearTimeout(this.dblTimeout);\r\n // Konva.inDblClickWindow = false;\r\n }\r\n else if (!DD.justDragged) {\r\n Konva.inDblClickWindow = true;\r\n clearTimeout(this.dblTimeout);\r\n }\r\n this.dblTimeout = setTimeout(function () {\r\n Konva.inDblClickWindow = false;\r\n }, Konva.dblClickWindow);\r\n var triggeredOnShape = false;\r\n var processedShapesIds = {};\r\n var tapTriggered = false;\r\n var dblTapTriggered = false;\r\n this._changedPointerPositions.forEach(function (pos) {\r\n var shape = getCapturedShape(pos.id) ||\r\n _this.getIntersection(pos);\r\n if (shape) {\r\n shape.releaseCapture(pos.id);\r\n }\r\n var hasShape = shape && shape.isListening();\r\n if (!hasShape) {\r\n return;\r\n }\r\n if (processedShapesIds[shape._id]) {\r\n return;\r\n }\r\n processedShapesIds[shape._id] = true;\r\n _this.tapEndShape = shape;\r\n shape._fireAndBubble(TOUCHEND, { evt: evt, pointerId: pos.id });\r\n triggeredOnShape = true;\r\n // detect if tap or double tap occurred\r\n if (Konva.listenClickTap && shape === _this.tapStartShape) {\r\n tapTriggered = true;\r\n shape._fireAndBubble(TAP, { evt: evt, pointerId: pos.id });\r\n if (fireDblClick && tapEndShape && tapEndShape === shape) {\r\n dblTapTriggered = true;\r\n shape._fireAndBubble(DBL_TAP, { evt: evt, pointerId: pos.id });\r\n }\r\n }\r\n // only call preventDefault if the shape is listening for events\r\n if (shape.isListening() && shape.preventDefault() && evt.cancelable) {\r\n evt.preventDefault();\r\n }\r\n });\r\n if (!triggeredOnShape) {\r\n this._fire(TOUCHEND, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n pointerId: this._changedPointerPositions[0].id,\r\n });\r\n }\r\n if (Konva.listenClickTap && !tapTriggered) {\r\n this.tapEndShape = null;\r\n this._fire(TAP, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n pointerId: this._changedPointerPositions[0].id,\r\n });\r\n }\r\n if (fireDblClick && !dblTapTriggered) {\r\n this._fire(DBL_TAP, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n pointerId: this._changedPointerPositions[0].id,\r\n });\r\n }\r\n // content events\r\n this._fire(CONTENT_TOUCHEND, { evt: evt });\r\n if (Konva.listenClickTap) {\r\n this._fire(CONTENT_TAP, { evt: evt });\r\n if (fireDblClick) {\r\n this._fire(CONTENT_DBL_TAP, { evt: evt });\r\n }\r\n }\r\n if (this.preventDefault() && evt.cancelable) {\r\n evt.preventDefault();\r\n }\r\n Konva.listenClickTap = false;\r\n };\r\n Stage.prototype._wheel = function (evt) {\r\n this.setPointersPositions(evt);\r\n var shape = this.getIntersection(this.getPointerPosition());\r\n if (shape && shape.isListening()) {\r\n shape._fireAndBubble(WHEEL, { evt: evt });\r\n }\r\n else {\r\n this._fire(WHEEL, {\r\n evt: evt,\r\n target: this,\r\n currentTarget: this,\r\n });\r\n }\r\n this._fire(CONTENT_WHEEL, { evt: evt });\r\n };\r\n Stage.prototype._pointerdown = function (evt) {\r\n if (!Konva._pointerEventsEnabled) {\r\n return;\r\n }\r\n this.setPointersPositions(evt);\r\n var shape = getCapturedShape(evt.pointerId) ||\r\n this.getIntersection(this.getPointerPosition());\r\n if (shape) {\r\n shape._fireAndBubble(POINTERDOWN, createEvent(evt));\r\n }\r\n };\r\n Stage.prototype._pointermove = function (evt) {\r\n if (!Konva._pointerEventsEnabled) {\r\n return;\r\n }\r\n this.setPointersPositions(evt);\r\n var shape = getCapturedShape(evt.pointerId) ||\r\n this.getIntersection(this.getPointerPosition());\r\n if (shape) {\r\n shape._fireAndBubble(POINTERMOVE, createEvent(evt));\r\n }\r\n };\r\n Stage.prototype._pointerup = function (evt) {\r\n if (!Konva._pointerEventsEnabled) {\r\n return;\r\n }\r\n this.setPointersPositions(evt);\r\n var shape = getCapturedShape(evt.pointerId) ||\r\n this.getIntersection(this.getPointerPosition());\r\n if (shape) {\r\n shape._fireAndBubble(POINTERUP, createEvent(evt));\r\n }\r\n releaseCapture(evt.pointerId);\r\n };\r\n Stage.prototype._pointercancel = function (evt) {\r\n if (!Konva._pointerEventsEnabled) {\r\n return;\r\n }\r\n this.setPointersPositions(evt);\r\n var shape = getCapturedShape(evt.pointerId) ||\r\n this.getIntersection(this.getPointerPosition());\r\n if (shape) {\r\n shape._fireAndBubble(POINTERUP, createEvent(evt));\r\n }\r\n releaseCapture(evt.pointerId);\r\n };\r\n Stage.prototype._lostpointercapture = function (evt) {\r\n releaseCapture(evt.pointerId);\r\n };\r\n /**\r\n * manually register pointers positions (mouse/touch) in the stage.\r\n * So you can use stage.getPointerPosition(). Usually you don't need to use that method\r\n * because all internal events are automatically registered. It may be useful if event\r\n * is triggered outside of the stage, but you still want to use Konva methods to get pointers position.\r\n * @method\r\n * @name Konva.Stage#setPointersPositions\r\n * @param {Object} event Event object\r\n * @example\r\n *\r\n * window.addEventListener('mousemove', (e) => {\r\n * stage.setPointersPositions(e);\r\n * });\r\n */\r\n Stage.prototype.setPointersPositions = function (evt) {\r\n var _this = this;\r\n var contentPosition = this._getContentPosition(), x = null, y = null;\r\n evt = evt ? evt : window.event;\r\n // touch events\r\n if (evt.touches !== undefined) {\r\n // touchlist has not support for map method\r\n // so we have to iterate\r\n this._pointerPositions = [];\r\n this._changedPointerPositions = [];\r\n Collection.prototype.each.call(evt.touches, function (touch) {\r\n _this._pointerPositions.push({\r\n id: touch.identifier,\r\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\r\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\r\n });\r\n });\r\n Collection.prototype.each.call(evt.changedTouches || evt.touches, function (touch) {\r\n _this._changedPointerPositions.push({\r\n id: touch.identifier,\r\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\r\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\r\n });\r\n });\r\n }\r\n else {\r\n // mouse events\r\n x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\r\n y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\r\n this.pointerPos = {\r\n x: x,\r\n y: y,\r\n };\r\n this._pointerPositions = [{ x: x, y: y, id: Util._getFirstPointerId(evt) }];\r\n this._changedPointerPositions = [\r\n { x: x, y: y, id: Util._getFirstPointerId(evt) },\r\n ];\r\n }\r\n };\r\n Stage.prototype._setPointerPosition = function (evt) {\r\n Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\r\n this.setPointersPositions(evt);\r\n };\r\n Stage.prototype._getContentPosition = function () {\r\n if (!this.content || !this.content.getBoundingClientRect) {\r\n return {\r\n top: 0,\r\n left: 0,\r\n scaleX: 1,\r\n scaleY: 1,\r\n };\r\n }\r\n var rect = this.content.getBoundingClientRect();\r\n return {\r\n top: rect.top,\r\n left: rect.left,\r\n // sometimes clientWidth can be equals to 0\r\n // i saw it in react-konva test, looks like it is because of hidden testing element\r\n scaleX: rect.width / this.content.clientWidth || 1,\r\n scaleY: rect.height / this.content.clientHeight || 1,\r\n };\r\n };\r\n Stage.prototype._buildDOM = function () {\r\n this.bufferCanvas = new SceneCanvas({\r\n width: this.width(),\r\n height: this.height(),\r\n });\r\n this.bufferHitCanvas = new HitCanvas({\r\n pixelRatio: 1,\r\n width: this.width(),\r\n height: this.height(),\r\n });\r\n if (!Konva.isBrowser) {\r\n return;\r\n }\r\n var container = this.container();\r\n if (!container) {\r\n throw 'Stage has no container. A container is required.';\r\n }\r\n // clear content inside container\r\n container.innerHTML = EMPTY_STRING$1;\r\n // content\r\n this.content = document.createElement('div');\r\n this.content.style.position = RELATIVE;\r\n this.content.style.userSelect = 'none';\r\n this.content.className = KONVA_CONTENT;\r\n this.content.setAttribute('role', 'presentation');\r\n container.appendChild(this.content);\r\n this._resizeDOM();\r\n };\r\n // currently cache function is now working for stage, because stage has no its own canvas element\r\n Stage.prototype.cache = function () {\r\n Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\r\n return this;\r\n };\r\n Stage.prototype.clearCache = function () {\r\n return this;\r\n };\r\n /**\r\n * batch draw\r\n * @method\r\n * @name Konva.Layer#batchDraw\r\n * @return {Konva.Stage} this\r\n */\r\n Stage.prototype.batchDraw = function () {\r\n this.children.each(function (layer) {\r\n layer.batchDraw();\r\n });\r\n return this;\r\n };\r\n return Stage;\r\n }(Container));\r\n Stage.prototype.nodeType = STAGE$1;\r\n _registerNode(Stage);\r\n /**\r\n * get/set container DOM element\r\n * @method\r\n * @name Konva.Stage#container\r\n * @returns {DomElement} container\r\n * @example\r\n * // get container\r\n * var container = stage.container();\r\n * // set container\r\n * var container = document.createElement('div');\r\n * body.appendChild(container);\r\n * stage.container(container);\r\n */\r\n Factory.addGetterSetter(Stage, 'container');\n\n var HAS_SHADOW = 'hasShadow';\r\n var SHADOW_RGBA = 'shadowRGBA';\r\n var patternImage = 'patternImage';\r\n var linearGradient = 'linearGradient';\r\n var radialGradient = 'radialGradient';\r\n var dummyContext;\r\n function getDummyContext() {\r\n if (dummyContext) {\r\n return dummyContext;\r\n }\r\n dummyContext = Util.createCanvasElement().getContext('2d');\r\n return dummyContext;\r\n }\r\n var shapes = {};\r\n // TODO: idea - use only \"remove\" (or destroy method)\r\n // how? on add, check that every inner shape has reference in konva store with color\r\n // on remove - clear that reference\r\n // the approach is good. But what if we want to cache the shape before we add it into the stage\r\n // what color to use for hit test?\r\n function _fillFunc(context) {\r\n context.fill();\r\n }\r\n function _strokeFunc(context) {\r\n context.stroke();\r\n }\r\n function _fillFuncHit(context) {\r\n context.fill();\r\n }\r\n function _strokeFuncHit(context) {\r\n context.stroke();\r\n }\r\n function _clearHasShadowCache() {\r\n this._clearCache(HAS_SHADOW);\r\n }\r\n function _clearGetShadowRGBACache() {\r\n this._clearCache(SHADOW_RGBA);\r\n }\r\n function _clearFillPatternCache() {\r\n this._clearCache(patternImage);\r\n }\r\n function _clearLinearGradientCache() {\r\n this._clearCache(linearGradient);\r\n }\r\n function _clearRadialGradientCache() {\r\n this._clearCache(radialGradient);\r\n }\r\n /**\r\n * Shape constructor. Shapes are primitive objects such as rectangles,\r\n * circles, text, lines, etc.\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Node\r\n * @param {Object} config\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var customShape = new Konva.Shape({\r\n * x: 5,\r\n * y: 10,\r\n * fill: 'red',\r\n * // a Konva.Canvas renderer is passed into the sceneFunc function\r\n * sceneFunc (context, shape) {\r\n * context.beginPath();\r\n * context.moveTo(200, 50);\r\n * context.lineTo(420, 80);\r\n * context.quadraticCurveTo(300, 100, 260, 170);\r\n * context.closePath();\r\n * // Konva specific method\r\n * context.fillStrokeShape(shape);\r\n * }\r\n *});\r\n */\r\n var Shape = /** @class */ (function (_super) {\r\n __extends(Shape, _super);\r\n function Shape(config) {\r\n var _this = _super.call(this, config) || this;\r\n // set colorKey\r\n var key;\r\n while (true) {\r\n key = Util.getRandomColor();\r\n if (key && !(key in shapes)) {\r\n break;\r\n }\r\n }\r\n _this.colorKey = key;\r\n shapes[key] = _this;\r\n return _this;\r\n }\r\n /**\r\n * get canvas context tied to the layer\r\n * @method\r\n * @name Konva.Shape#getContext\r\n * @returns {Konva.Context}\r\n */\r\n Shape.prototype.getContext = function () {\r\n return this.getLayer().getContext();\r\n };\r\n /**\r\n * get canvas renderer tied to the layer. Note that this returns a canvas renderer, not a canvas element\r\n * @method\r\n * @name Konva.Shape#getCanvas\r\n * @returns {Konva.Canvas}\r\n */\r\n Shape.prototype.getCanvas = function () {\r\n return this.getLayer().getCanvas();\r\n };\r\n Shape.prototype.getSceneFunc = function () {\r\n return this.attrs.sceneFunc || this['_sceneFunc'];\r\n };\r\n Shape.prototype.getHitFunc = function () {\r\n return this.attrs.hitFunc || this['_hitFunc'];\r\n };\r\n /**\r\n * returns whether or not a shadow will be rendered\r\n * @method\r\n * @name Konva.Shape#hasShadow\r\n * @returns {Boolean}\r\n */\r\n Shape.prototype.hasShadow = function () {\r\n return this._getCache(HAS_SHADOW, this._hasShadow);\r\n };\r\n Shape.prototype._hasShadow = function () {\r\n return (this.shadowEnabled() &&\r\n this.shadowOpacity() !== 0 &&\r\n !!(this.shadowColor() ||\r\n this.shadowBlur() ||\r\n this.shadowOffsetX() ||\r\n this.shadowOffsetY()));\r\n };\r\n Shape.prototype._getFillPattern = function () {\r\n return this._getCache(patternImage, this.__getFillPattern);\r\n };\r\n Shape.prototype.__getFillPattern = function () {\r\n if (this.fillPatternImage()) {\r\n var ctx = getDummyContext();\r\n var pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\r\n // TODO: how to enable it? It doesn't work in FF...\r\n // pattern.setTransform({\r\n // a: this.fillPatternScaleX(), // Horizontal scaling. A value of 1 results in no scaling.\r\n // b: 0, // Vertical skewing.\r\n // c: 0, // Horizontal skewing.\r\n // d: this.fillPatternScaleY(), // Vertical scaling. A value of 1 results in no scaling.\r\n // e: 0, // Horizontal translation (moving).\r\n // f: 0 // Vertical translation (moving).\r\n // });\r\n return pattern;\r\n }\r\n };\r\n Shape.prototype._getLinearGradient = function () {\r\n return this._getCache(linearGradient, this.__getLinearGradient);\r\n };\r\n Shape.prototype.__getLinearGradient = function () {\r\n var colorStops = this.fillLinearGradientColorStops();\r\n if (colorStops) {\r\n var ctx = getDummyContext();\r\n var start = this.fillLinearGradientStartPoint();\r\n var end = this.fillLinearGradientEndPoint();\r\n var grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\r\n // build color stops\r\n for (var n = 0; n < colorStops.length; n += 2) {\r\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\r\n }\r\n return grd;\r\n }\r\n };\r\n Shape.prototype._getRadialGradient = function () {\r\n return this._getCache(radialGradient, this.__getRadialGradient);\r\n };\r\n Shape.prototype.__getRadialGradient = function () {\r\n var colorStops = this.fillRadialGradientColorStops();\r\n if (colorStops) {\r\n var ctx = getDummyContext();\r\n var start = this.fillRadialGradientStartPoint();\r\n var end = this.fillRadialGradientEndPoint();\r\n var grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\r\n // build color stops\r\n for (var n = 0; n < colorStops.length; n += 2) {\r\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\r\n }\r\n return grd;\r\n }\r\n };\r\n Shape.prototype.getShadowRGBA = function () {\r\n return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\r\n };\r\n Shape.prototype._getShadowRGBA = function () {\r\n if (this.hasShadow()) {\r\n var rgba = Util.colorToRGBA(this.shadowColor());\r\n return ('rgba(' +\r\n rgba.r +\r\n ',' +\r\n rgba.g +\r\n ',' +\r\n rgba.b +\r\n ',' +\r\n rgba.a * (this.shadowOpacity() || 1) +\r\n ')');\r\n }\r\n };\r\n /**\r\n * returns whether or not the shape will be filled\r\n * @method\r\n * @name Konva.Shape#hasFill\r\n * @returns {Boolean}\r\n */\r\n Shape.prototype.hasFill = function () {\r\n var _this = this;\r\n return this._calculate('hasFill', [\r\n 'fillEnabled',\r\n 'fill',\r\n 'fillPatternImage',\r\n 'fillLinearGradientColorStops',\r\n 'fillRadialGradientColorStops',\r\n ], function () {\r\n return (_this.fillEnabled() &&\r\n !!(_this.fill() ||\r\n _this.fillPatternImage() ||\r\n _this.fillLinearGradientColorStops() ||\r\n _this.fillRadialGradientColorStops()));\r\n });\r\n };\r\n /**\r\n * returns whether or not the shape will be stroked\r\n * @method\r\n * @name Konva.Shape#hasStroke\r\n * @returns {Boolean}\r\n */\r\n Shape.prototype.hasStroke = function () {\r\n var _this = this;\r\n return this._calculate('hasStroke', [\r\n 'strokeEnabled',\r\n 'strokeWidth',\r\n 'stroke',\r\n 'strokeLinearGradientColorStops',\r\n ], function () {\r\n return (_this.strokeEnabled() &&\r\n _this.strokeWidth() &&\r\n !!(_this.stroke() || _this.strokeLinearGradientColorStops())\r\n // this.getStrokeRadialGradientColorStops()\r\n );\r\n });\r\n // return (\r\n // this.strokeEnabled() &&\r\n // this.strokeWidth() &&\r\n // !!(this.stroke() || this.strokeLinearGradientColorStops())\r\n // // this.getStrokeRadialGradientColorStops()\r\n // );\r\n };\r\n Shape.prototype.hasHitStroke = function () {\r\n var width = this.hitStrokeWidth();\r\n // on auto just check by stroke\r\n if (width === 'auto') {\r\n return this.hasStroke();\r\n }\r\n // we should enable hit stroke if stroke is enabled\r\n // and we have some value from width\r\n return this.strokeEnabled() && !!width;\r\n };\r\n /**\r\n * determines if point is in the shape, regardless if other shapes are on top of it. Note: because\r\n * this method clears a temporary canvas and then redraws the shape, it performs very poorly if executed many times\r\n * consecutively. Please use the {@link Konva.Stage#getIntersection} method if at all possible\r\n * because it performs much better\r\n * @method\r\n * @name Konva.Shape#intersects\r\n * @param {Object} point\r\n * @param {Number} point.x\r\n * @param {Number} point.y\r\n * @returns {Boolean}\r\n */\r\n Shape.prototype.intersects = function (point) {\r\n var stage = this.getStage(), bufferHitCanvas = stage.bufferHitCanvas, p;\r\n bufferHitCanvas.getContext().clear();\r\n this.drawHit(bufferHitCanvas);\r\n p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\r\n return p[3] > 0;\r\n };\r\n Shape.prototype.destroy = function () {\r\n Node.prototype.destroy.call(this);\r\n delete shapes[this.colorKey];\r\n delete this.colorKey;\r\n return this;\r\n };\r\n // why do we need buffer canvas?\r\n // it give better result when a shape has\r\n // stroke with fill and with some opacity\r\n Shape.prototype._useBufferCanvas = function (forceFill) {\r\n // image and sprite still has \"fill\" as image\r\n // so they use that method with forced fill\r\n // it probably will be simpler, then copy/paste the code\r\n var _a;\r\n // buffer canvas is available only inside the stage\r\n if (!this.getStage()) {\r\n return false;\r\n }\r\n // force skip buffer canvas\r\n var perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\r\n if (!perfectDrawEnabled) {\r\n return false;\r\n }\r\n var hasFill = forceFill || this.hasFill();\r\n var hasStroke = this.hasStroke();\r\n var isTransparent = this.getAbsoluteOpacity() !== 1;\r\n if (hasFill && hasStroke && isTransparent) {\r\n return true;\r\n }\r\n var hasShadow = this.hasShadow();\r\n var strokeForShadow = this.shadowForStrokeEnabled();\r\n if (hasFill && hasStroke && hasShadow && strokeForShadow) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n Shape.prototype.setStrokeHitEnabled = function (val) {\r\n Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\r\n if (val) {\r\n this.hitStrokeWidth('auto');\r\n }\r\n else {\r\n this.hitStrokeWidth(0);\r\n }\r\n };\r\n Shape.prototype.getStrokeHitEnabled = function () {\r\n if (this.hitStrokeWidth() === 0) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n /**\r\n * return self rectangle (x, y, width, height) of shape.\r\n * This method are not taken into account transformation and styles.\r\n * @method\r\n * @name Konva.Shape#getSelfRect\r\n * @returns {Object} rect with {x, y, width, height} properties\r\n * @example\r\n *\r\n * rect.getSelfRect(); // return {x:0, y:0, width:rect.width(), height:rect.height()}\r\n * circle.getSelfRect(); // return {x: - circle.width() / 2, y: - circle.height() / 2, width:circle.width(), height:circle.height()}\r\n *\r\n */\r\n Shape.prototype.getSelfRect = function () {\r\n var size = this.size();\r\n return {\r\n x: this._centroid ? -size.width / 2 : 0,\r\n y: this._centroid ? -size.height / 2 : 0,\r\n width: size.width,\r\n height: size.height,\r\n };\r\n };\r\n Shape.prototype.getClientRect = function (attrs) {\r\n attrs = attrs || {};\r\n var skipTransform = attrs.skipTransform;\r\n var relativeTo = attrs.relativeTo;\r\n var fillRect = this.getSelfRect();\r\n var applyStroke = !attrs.skipStroke && this.hasStroke();\r\n var strokeWidth = (applyStroke && this.strokeWidth()) || 0;\r\n var fillAndStrokeWidth = fillRect.width + strokeWidth;\r\n var fillAndStrokeHeight = fillRect.height + strokeWidth;\r\n var applyShadow = !attrs.skipShadow && this.hasShadow();\r\n var shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\r\n var shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\r\n var preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\r\n var preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\r\n var blurRadius = (applyShadow && this.shadowBlur()) || 0;\r\n var width = preWidth + blurRadius * 2;\r\n var height = preHeight + blurRadius * 2;\r\n // if stroke, for example = 3\r\n // we need to set x to 1.5, but after Math.round it will be 2\r\n // as we have additional offset we need to increase width and height by 1 pixel\r\n var roundingOffset = 0;\r\n if (Math.round(strokeWidth / 2) !== strokeWidth / 2) {\r\n roundingOffset = 1;\r\n }\r\n var rect = {\r\n width: width + roundingOffset,\r\n height: height + roundingOffset,\r\n x: -Math.round(strokeWidth / 2 + blurRadius) +\r\n Math.min(shadowOffsetX, 0) +\r\n fillRect.x,\r\n y: -Math.round(strokeWidth / 2 + blurRadius) +\r\n Math.min(shadowOffsetY, 0) +\r\n fillRect.y,\r\n };\r\n if (!skipTransform) {\r\n return this._transformedRect(rect, relativeTo);\r\n }\r\n return rect;\r\n };\r\n Shape.prototype.drawScene = function (can, top) {\r\n // basically there are 3 drawing modes\r\n // 1 - simple drawing when nothing is cached.\r\n // 2 - when we are caching current\r\n // 3 - when node is cached and we need to draw it into layer\r\n var layer = this.getLayer(), canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow(), stage, bufferCanvas, bufferContext;\r\n var caching = canvas.isCache;\r\n var skipBuffer = canvas.isCache;\r\n var cachingSelf = top === this;\r\n if (!this.isVisible() && !caching) {\r\n return this;\r\n }\r\n // if node is cached we just need to draw from cache\r\n if (cachedCanvas) {\r\n context.save();\r\n var m = this.getAbsoluteTransform(top).getMatrix();\r\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\r\n this._drawCachedSceneCanvas(context);\r\n context.restore();\r\n return this;\r\n }\r\n if (!drawFunc) {\r\n return this;\r\n }\r\n context.save();\r\n // if buffer canvas is needed\r\n if (this._useBufferCanvas() && !skipBuffer) {\r\n stage = this.getStage();\r\n bufferCanvas = stage.bufferCanvas;\r\n bufferContext = bufferCanvas.getContext();\r\n bufferContext.clear();\r\n bufferContext.save();\r\n bufferContext._applyLineJoin(this);\r\n // layer might be undefined if we are using cache before adding to layer\r\n var o = this.getAbsoluteTransform(top).getMatrix();\r\n bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\r\n drawFunc.call(this, bufferContext, this);\r\n bufferContext.restore();\r\n var ratio = bufferCanvas.pixelRatio;\r\n if (hasShadow) {\r\n context._applyShadow(this);\r\n }\r\n context._applyOpacity(this);\r\n context._applyGlobalCompositeOperation(this);\r\n context.drawImage(bufferCanvas._canvas, 0, 0, bufferCanvas.width / ratio, bufferCanvas.height / ratio);\r\n }\r\n else {\r\n context._applyLineJoin(this);\r\n if (!cachingSelf) {\r\n var o = this.getAbsoluteTransform(top).getMatrix();\r\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\r\n context._applyOpacity(this);\r\n context._applyGlobalCompositeOperation(this);\r\n }\r\n if (hasShadow) {\r\n context._applyShadow(this);\r\n }\r\n drawFunc.call(this, context, this);\r\n }\r\n context.restore();\r\n return this;\r\n };\r\n Shape.prototype.drawHit = function (can, top) {\r\n if (!this.shouldDrawHit(top)) {\r\n return this;\r\n }\r\n var layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\r\n if (!this.colorKey) {\r\n console.log(this);\r\n Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. See the shape in logs above. If you want to reuse shape you should call remove() instead of destroy()');\r\n }\r\n if (cachedHitCanvas) {\r\n context.save();\r\n var m = this.getAbsoluteTransform(top).getMatrix();\r\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\r\n this._drawCachedHitCanvas(context);\r\n context.restore();\r\n return this;\r\n }\r\n if (!drawFunc) {\r\n return this;\r\n }\r\n context.save();\r\n context._applyLineJoin(this);\r\n var selfCache = this === top;\r\n if (!selfCache) {\r\n var o = this.getAbsoluteTransform(top).getMatrix();\r\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\r\n }\r\n drawFunc.call(this, context, this);\r\n context.restore();\r\n return this;\r\n };\r\n /**\r\n * draw hit graph using the cached scene canvas\r\n * @method\r\n * @name Konva.Shape#drawHitFromCache\r\n * @param {Integer} alphaThreshold alpha channel threshold that determines whether or not\r\n * a pixel should be drawn onto the hit graph. Must be a value between 0 and 255.\r\n * The default is 0\r\n * @returns {Konva.Shape}\r\n * @example\r\n * shape.cache();\r\n * shape.drawHitFromCache();\r\n */\r\n Shape.prototype.drawHitFromCache = function (alphaThreshold) {\r\n if (alphaThreshold === void 0) { alphaThreshold = 0; }\r\n var cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight(), hitImageData, hitData, len, rgbColorKey, i, alpha;\r\n hitContext.clear();\r\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\r\n try {\r\n hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\r\n hitData = hitImageData.data;\r\n len = hitData.length;\r\n rgbColorKey = Util._hexToRgb(this.colorKey);\r\n // replace non transparent pixels with color key\r\n for (i = 0; i < len; i += 4) {\r\n alpha = hitData[i + 3];\r\n if (alpha > alphaThreshold) {\r\n hitData[i] = rgbColorKey.r;\r\n hitData[i + 1] = rgbColorKey.g;\r\n hitData[i + 2] = rgbColorKey.b;\r\n hitData[i + 3] = 255;\r\n }\r\n else {\r\n hitData[i + 3] = 0;\r\n }\r\n }\r\n hitContext.putImageData(hitImageData, 0, 0);\r\n }\r\n catch (e) {\r\n Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\r\n }\r\n return this;\r\n };\r\n Shape.prototype.hasPointerCapture = function (pointerId) {\r\n return hasPointerCapture(pointerId, this);\r\n };\r\n Shape.prototype.setPointerCapture = function (pointerId) {\r\n setPointerCapture(pointerId, this);\r\n };\r\n Shape.prototype.releaseCapture = function (pointerId) {\r\n releaseCapture(pointerId);\r\n };\r\n return Shape;\r\n }(Node));\r\n Shape.prototype._fillFunc = _fillFunc;\r\n Shape.prototype._strokeFunc = _strokeFunc;\r\n Shape.prototype._fillFuncHit = _fillFuncHit;\r\n Shape.prototype._strokeFuncHit = _strokeFuncHit;\r\n Shape.prototype._centroid = false;\r\n Shape.prototype.nodeType = 'Shape';\r\n _registerNode(Shape);\r\n Shape.prototype.eventListeners = {};\r\n Shape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\r\n Shape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\r\n Shape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva', _clearFillPatternCache);\r\n Shape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\r\n Shape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\r\n // add getters and setters\r\n Factory.addGetterSetter(Shape, 'stroke', undefined, getStringValidator());\r\n /**\r\n * get/set stroke color\r\n * @name Konva.Shape#stroke\r\n * @method\r\n * @param {String} color\r\n * @returns {String}\r\n * @example\r\n * // get stroke color\r\n * var stroke = shape.stroke();\r\n *\r\n * // set stroke color with color string\r\n * shape.stroke('green');\r\n *\r\n * // set stroke color with hex\r\n * shape.stroke('#00ff00');\r\n *\r\n * // set stroke color with rgb\r\n * shape.stroke('rgb(0,255,0)');\r\n *\r\n * // set stroke color with rgba and make it 50% opaque\r\n * shape.stroke('rgba(0,255,0,0.5');\r\n */\r\n Factory.addGetterSetter(Shape, 'strokeWidth', 2, getNumberValidator());\r\n /**\r\n * get/set stroke width\r\n * @name Konva.Shape#strokeWidth\r\n * @method\r\n * @param {Number} strokeWidth\r\n * @returns {Number}\r\n * @example\r\n * // get stroke width\r\n * var strokeWidth = shape.strokeWidth();\r\n *\r\n * // set stroke width\r\n * shape.strokeWidth(10);\r\n */\r\n Factory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', getNumberOrAutoValidator());\r\n /**\r\n * get/set stroke width for hit detection. Default value is \"auto\", it means it will be equals to strokeWidth\r\n * @name Konva.Shape#hitStrokeWidth\r\n * @method\r\n * @param {Number} hitStrokeWidth\r\n * @returns {Number}\r\n * @example\r\n * // get stroke width\r\n * var hitStrokeWidth = shape.hitStrokeWidth();\r\n *\r\n * // set hit stroke width\r\n * shape.hitStrokeWidth(20);\r\n * // set hit stroke width always equals to scene stroke width\r\n * shape.hitStrokeWidth('auto');\r\n */\r\n Factory.addGetterSetter(Shape, 'strokeHitEnabled', true, getBooleanValidator());\r\n /**\r\n * **deprecated, use hitStrokeWidth instead!** get/set strokeHitEnabled property. Useful for performance optimization.\r\n * You may set `shape.strokeHitEnabled(false)`. In this case stroke will be no draw on hit canvas, so hit area\r\n * of shape will be decreased (by lineWidth / 2). Remember that non closed line with `strokeHitEnabled = false`\r\n * will be not drawn on hit canvas, that is mean line will no trigger pointer events (like mouseover)\r\n * Default value is true.\r\n * @name Konva.Shape#strokeHitEnabled\r\n * @method\r\n * @param {Boolean} strokeHitEnabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get strokeHitEnabled\r\n * var strokeHitEnabled = shape.strokeHitEnabled();\r\n *\r\n * // set strokeHitEnabled\r\n * shape.strokeHitEnabled();\r\n */\r\n Factory.addGetterSetter(Shape, 'perfectDrawEnabled', true, getBooleanValidator());\r\n /**\r\n * get/set perfectDrawEnabled. If a shape has fill, stroke and opacity you may set `perfectDrawEnabled` to false to improve performance.\r\n * See http://konvajs.org/docs/performance/Disable_Perfect_Draw.html for more information.\r\n * Default value is true\r\n * @name Konva.Shape#perfectDrawEnabled\r\n * @method\r\n * @param {Boolean} perfectDrawEnabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get perfectDrawEnabled\r\n * var perfectDrawEnabled = shape.perfectDrawEnabled();\r\n *\r\n * // set perfectDrawEnabled\r\n * shape.perfectDrawEnabled();\r\n */\r\n Factory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, getBooleanValidator());\r\n /**\r\n * get/set shadowForStrokeEnabled. Useful for performance optimization.\r\n * You may set `shape.shadowForStrokeEnabled(false)`. In this case stroke will no effect shadow.\r\n * Remember if you set `shadowForStrokeEnabled = false` for non closed line - that line will have no shadow!.\r\n * Default value is true\r\n * @name Konva.Shape#shadowForStrokeEnabled\r\n * @method\r\n * @param {Boolean} shadowForStrokeEnabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get shadowForStrokeEnabled\r\n * var shadowForStrokeEnabled = shape.shadowForStrokeEnabled();\r\n *\r\n * // set shadowForStrokeEnabled\r\n * shape.shadowForStrokeEnabled();\r\n */\r\n Factory.addGetterSetter(Shape, 'lineJoin');\r\n /**\r\n * get/set line join. Can be miter, round, or bevel. The\r\n * default is miter\r\n * @name Konva.Shape#lineJoin\r\n * @method\r\n * @param {String} lineJoin\r\n * @returns {String}\r\n * @example\r\n * // get line join\r\n * var lineJoin = shape.lineJoin();\r\n *\r\n * // set line join\r\n * shape.lineJoin('round');\r\n */\r\n Factory.addGetterSetter(Shape, 'lineCap');\r\n /**\r\n * get/set line cap. Can be butt, round, or square\r\n * @name Konva.Shape#lineCap\r\n * @method\r\n * @param {String} lineCap\r\n * @returns {String}\r\n * @example\r\n * // get line cap\r\n * var lineCap = shape.lineCap();\r\n *\r\n * // set line cap\r\n * shape.lineCap('round');\r\n */\r\n Factory.addGetterSetter(Shape, 'sceneFunc');\r\n /**\r\n * get/set scene draw function. That function is used to draw the shape on a canvas.\r\n * Also that function will be used to draw hit area of the shape, in case if hitFunc is not defined.\r\n * @name Konva.Shape#sceneFunc\r\n * @method\r\n * @param {Function} drawFunc drawing function\r\n * @returns {Function}\r\n * @example\r\n * // get scene draw function\r\n * var sceneFunc = shape.sceneFunc();\r\n *\r\n * // set scene draw function\r\n * shape.sceneFunc(function(context, shape) {\r\n * context.beginPath();\r\n * context.rect(0, 0, shape.width(), shape.height());\r\n * context.closePath();\r\n * // important Konva method that fill and stroke shape from its properties\r\n * // like stroke and fill\r\n * context.fillStrokeShape(shape);\r\n * });\r\n */\r\n Factory.addGetterSetter(Shape, 'hitFunc');\r\n /**\r\n * get/set hit draw function. That function is used to draw custom hit area of a shape.\r\n * @name Konva.Shape#hitFunc\r\n * @method\r\n * @param {Function} drawFunc drawing function\r\n * @returns {Function}\r\n * @example\r\n * // get hit draw function\r\n * var hitFunc = shape.hitFunc();\r\n *\r\n * // set hit draw function\r\n * shape.hitFunc(function(context) {\r\n * context.beginPath();\r\n * context.rect(0, 0, shape.width(), shape.height());\r\n * context.closePath();\r\n * // important Konva method that fill and stroke shape from its properties\r\n * context.fillStrokeShape(shape);\r\n * });\r\n */\r\n Factory.addGetterSetter(Shape, 'dash');\r\n /**\r\n * get/set dash array for stroke.\r\n * @name Konva.Shape#dash\r\n * @method\r\n * @param {Array} dash\r\n * @returns {Array}\r\n * @example\r\n * // apply dashed stroke that is 10px long and 5 pixels apart\r\n * line.dash([10, 5]);\r\n * // apply dashed stroke that is made up of alternating dashed\r\n * // lines that are 10px long and 20px apart, and dots that have\r\n * // a radius of 5px and are 20px apart\r\n * line.dash([10, 20, 0.001, 20]);\r\n */\r\n Factory.addGetterSetter(Shape, 'dashOffset', 0, getNumberValidator());\r\n /**\r\n * get/set dash offset for stroke.\r\n * @name Konva.Shape#dash\r\n * @method\r\n * @param {Number} dash offset\r\n * @returns {Number}\r\n * @example\r\n * // apply dashed stroke that is 10px long and 5 pixels apart with an offset of 5px\r\n * line.dash([10, 5]);\r\n * line.dashOffset(5);\r\n */\r\n Factory.addGetterSetter(Shape, 'shadowColor', undefined, getStringValidator());\r\n /**\r\n * get/set shadow color\r\n * @name Konva.Shape#shadowColor\r\n * @method\r\n * @param {String} color\r\n * @returns {String}\r\n * @example\r\n * // get shadow color\r\n * var shadow = shape.shadowColor();\r\n *\r\n * // set shadow color with color string\r\n * shape.shadowColor('green');\r\n *\r\n * // set shadow color with hex\r\n * shape.shadowColor('#00ff00');\r\n *\r\n * // set shadow color with rgb\r\n * shape.shadowColor('rgb(0,255,0)');\r\n *\r\n * // set shadow color with rgba and make it 50% opaque\r\n * shape.shadowColor('rgba(0,255,0,0.5');\r\n */\r\n Factory.addGetterSetter(Shape, 'shadowBlur', 0, getNumberValidator());\r\n /**\r\n * get/set shadow blur\r\n * @name Konva.Shape#shadowBlur\r\n * @method\r\n * @param {Number} blur\r\n * @returns {Number}\r\n * @example\r\n * // get shadow blur\r\n * var shadowBlur = shape.shadowBlur();\r\n *\r\n * // set shadow blur\r\n * shape.shadowBlur(10);\r\n */\r\n Factory.addGetterSetter(Shape, 'shadowOpacity', 1, getNumberValidator());\r\n /**\r\n * get/set shadow opacity. must be a value between 0 and 1\r\n * @name Konva.Shape#shadowOpacity\r\n * @method\r\n * @param {Number} opacity\r\n * @returns {Number}\r\n * @example\r\n * // get shadow opacity\r\n * var shadowOpacity = shape.shadowOpacity();\r\n *\r\n * // set shadow opacity\r\n * shape.shadowOpacity(0.5);\r\n */\r\n Factory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\r\n /**\r\n * get/set shadow offset\r\n * @name Konva.Shape#shadowOffset\r\n * @method\r\n * @param {Object} offset\r\n * @param {Number} offset.x\r\n * @param {Number} offset.y\r\n * @returns {Object}\r\n * @example\r\n * // get shadow offset\r\n * var shadowOffset = shape.shadowOffset();\r\n *\r\n * // set shadow offset\r\n * shape.shadowOffset({\r\n * x: 20,\r\n * y: 10\r\n * });\r\n */\r\n Factory.addGetterSetter(Shape, 'shadowOffsetX', 0, getNumberValidator());\r\n /**\r\n * get/set shadow offset x\r\n * @name Konva.Shape#shadowOffsetX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get shadow offset x\r\n * var shadowOffsetX = shape.shadowOffsetX();\r\n *\r\n * // set shadow offset x\r\n * shape.shadowOffsetX(5);\r\n */\r\n Factory.addGetterSetter(Shape, 'shadowOffsetY', 0, getNumberValidator());\r\n /**\r\n * get/set shadow offset y\r\n * @name Konva.Shape#shadowOffsetY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get shadow offset y\r\n * var shadowOffsetY = shape.shadowOffsetY();\r\n *\r\n * // set shadow offset y\r\n * shape.shadowOffsetY(5);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillPatternImage');\r\n /**\r\n * get/set fill pattern image\r\n * @name Konva.Shape#fillPatternImage\r\n * @method\r\n * @param {Image} image object\r\n * @returns {Image}\r\n * @example\r\n * // get fill pattern image\r\n * var fillPatternImage = shape.fillPatternImage();\r\n *\r\n * // set fill pattern image\r\n * var imageObj = new Image();\r\n * imageObj.onload = function() {\r\n * shape.fillPatternImage(imageObj);\r\n * };\r\n * imageObj.src = 'path/to/image/jpg';\r\n */\r\n Factory.addGetterSetter(Shape, 'fill', undefined, getStringValidator());\r\n /**\r\n * get/set fill color\r\n * @name Konva.Shape#fill\r\n * @method\r\n * @param {String} color\r\n * @returns {String}\r\n * @example\r\n * // get fill color\r\n * var fill = shape.fill();\r\n *\r\n * // set fill color with color string\r\n * shape.fill('green');\r\n *\r\n * // set fill color with hex\r\n * shape.fill('#00ff00');\r\n *\r\n * // set fill color with rgb\r\n * shape.fill('rgb(0,255,0)');\r\n *\r\n * // set fill color with rgba and make it 50% opaque\r\n * shape.fill('rgba(0,255,0,0.5');\r\n *\r\n * // shape without fill\r\n * shape.fill(null);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillPatternX', 0, getNumberValidator());\r\n /**\r\n * get/set fill pattern x\r\n * @name Konva.Shape#fillPatternX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get fill pattern x\r\n * var fillPatternX = shape.fillPatternX();\r\n * // set fill pattern x\r\n * shape.fillPatternX(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillPatternY', 0, getNumberValidator());\r\n /**\r\n * get/set fill pattern y\r\n * @name Konva.Shape#fillPatternY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get fill pattern y\r\n * var fillPatternY = shape.fillPatternY();\r\n * // set fill pattern y\r\n * shape.fillPatternY(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\r\n /**\r\n * get/set fill linear gradient color stops\r\n * @name Konva.Shape#fillLinearGradientColorStops\r\n * @method\r\n * @param {Array} colorStops\r\n * @returns {Array} colorStops\r\n * @example\r\n * // get fill linear gradient color stops\r\n * var colorStops = shape.fillLinearGradientColorStops();\r\n *\r\n * // create a linear gradient that starts with red, changes to blue\r\n * // halfway through, and then changes to green\r\n * shape.fillLinearGradientColorStops(0, 'red', 0.5, 'blue', 1, 'green');\r\n */\r\n Factory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\r\n /**\r\n * get/set stroke linear gradient color stops\r\n * @name Konva.Shape#strokeLinearGradientColorStops\r\n * @method\r\n * @param {Array} colorStops\r\n * @returns {Array} colorStops\r\n * @example\r\n * // get stroke linear gradient color stops\r\n * var colorStops = shape.strokeLinearGradientColorStops();\r\n *\r\n * // create a linear gradient that starts with red, changes to blue\r\n * // halfway through, and then changes to green\r\n * shape.strokeLinearGradientColorStops([0, 'red', 0.5, 'blue', 1, 'green']);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\r\n /**\r\n * get/set fill radial gradient start radius\r\n * @name Konva.Shape#fillRadialGradientStartRadius\r\n * @method\r\n * @param {Number} radius\r\n * @returns {Number}\r\n * @example\r\n * // get radial gradient start radius\r\n * var startRadius = shape.fillRadialGradientStartRadius();\r\n *\r\n * // set radial gradient start radius\r\n * shape.fillRadialGradientStartRadius(0);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\r\n /**\r\n * get/set fill radial gradient end radius\r\n * @name Konva.Shape#fillRadialGradientEndRadius\r\n * @method\r\n * @param {Number} radius\r\n * @returns {Number}\r\n * @example\r\n * // get radial gradient end radius\r\n * var endRadius = shape.fillRadialGradientEndRadius();\r\n *\r\n * // set radial gradient end radius\r\n * shape.fillRadialGradientEndRadius(100);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\r\n /**\r\n * get/set fill radial gradient color stops\r\n * @name Konva.Shape#fillRadialGradientColorStops\r\n * @method\r\n * @param {Number} colorStops\r\n * @returns {Array}\r\n * @example\r\n * // get fill radial gradient color stops\r\n * var colorStops = shape.fillRadialGradientColorStops();\r\n *\r\n * // create a radial gradient that starts with red, changes to blue\r\n * // halfway through, and then changes to green\r\n * shape.fillRadialGradientColorStops(0, 'red', 0.5, 'blue', 1, 'green');\r\n */\r\n Factory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\r\n /**\r\n * get/set fill pattern repeat. Can be 'repeat', 'repeat-x', 'repeat-y', or 'no-repeat'. The default is 'repeat'\r\n * @name Konva.Shape#fillPatternRepeat\r\n * @method\r\n * @param {String} repeat\r\n * @returns {String}\r\n * @example\r\n * // get fill pattern repeat\r\n * var repeat = shape.fillPatternRepeat();\r\n *\r\n * // repeat pattern in x direction only\r\n * shape.fillPatternRepeat('repeat-x');\r\n *\r\n * // do not repeat the pattern\r\n * shape.fillPatternRepeat('no-repeat');\r\n */\r\n Factory.addGetterSetter(Shape, 'fillEnabled', true);\r\n /**\r\n * get/set fill enabled flag\r\n * @name Konva.Shape#fillEnabled\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get fill enabled flag\r\n * var fillEnabled = shape.fillEnabled();\r\n *\r\n * // disable fill\r\n * shape.fillEnabled(false);\r\n *\r\n * // enable fill\r\n * shape.fillEnabled(true);\r\n */\r\n Factory.addGetterSetter(Shape, 'strokeEnabled', true);\r\n /**\r\n * get/set stroke enabled flag\r\n * @name Konva.Shape#strokeEnabled\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get stroke enabled flag\r\n * var strokeEnabled = shape.strokeEnabled();\r\n *\r\n * // disable stroke\r\n * shape.strokeEnabled(false);\r\n *\r\n * // enable stroke\r\n * shape.strokeEnabled(true);\r\n */\r\n Factory.addGetterSetter(Shape, 'shadowEnabled', true);\r\n /**\r\n * get/set shadow enabled flag\r\n * @name Konva.Shape#shadowEnabled\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get shadow enabled flag\r\n * var shadowEnabled = shape.shadowEnabled();\r\n *\r\n * // disable shadow\r\n * shape.shadowEnabled(false);\r\n *\r\n * // enable shadow\r\n * shape.shadowEnabled(true);\r\n */\r\n Factory.addGetterSetter(Shape, 'dashEnabled', true);\r\n /**\r\n * get/set dash enabled flag\r\n * @name Konva.Shape#dashEnabled\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get dash enabled flag\r\n * var dashEnabled = shape.dashEnabled();\r\n *\r\n * // disable dash\r\n * shape.dashEnabled(false);\r\n *\r\n * // enable dash\r\n * shape.dashEnabled(true);\r\n */\r\n Factory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\r\n /**\r\n * get/set strokeScale enabled flag\r\n * @name Konva.Shape#strokeScaleEnabled\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get stroke scale enabled flag\r\n * var strokeScaleEnabled = shape.strokeScaleEnabled();\r\n *\r\n * // disable stroke scale\r\n * shape.strokeScaleEnabled(false);\r\n *\r\n * // enable stroke scale\r\n * shape.strokeScaleEnabled(true);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillPriority', 'color');\r\n /**\r\n * get/set fill priority. can be color, pattern, linear-gradient, or radial-gradient. The default is color.\r\n * This is handy if you want to toggle between different fill types.\r\n * @name Konva.Shape#fillPriority\r\n * @method\r\n * @param {String} priority\r\n * @returns {String}\r\n * @example\r\n * // get fill priority\r\n * var fillPriority = shape.fillPriority();\r\n *\r\n * // set fill priority\r\n * shape.fillPriority('linear-gradient');\r\n */\r\n Factory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\r\n /**\r\n * get/set fill pattern offset\r\n * @name Konva.Shape#fillPatternOffset\r\n * @method\r\n * @param {Object} offset\r\n * @param {Number} offset.x\r\n * @param {Number} offset.y\r\n * @returns {Object}\r\n * @example\r\n * // get fill pattern offset\r\n * var patternOffset = shape.fillPatternOffset();\r\n *\r\n * // set fill pattern offset\r\n * shape.fillPatternOffset({\r\n * x: 20,\r\n * y: 10\r\n * });\r\n */\r\n Factory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, getNumberValidator());\r\n /**\r\n * get/set fill pattern offset x\r\n * @name Konva.Shape#fillPatternOffsetX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get fill pattern offset x\r\n * var patternOffsetX = shape.fillPatternOffsetX();\r\n *\r\n * // set fill pattern offset x\r\n * shape.fillPatternOffsetX(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, getNumberValidator());\r\n /**\r\n * get/set fill pattern offset y\r\n * @name Konva.Shape#fillPatternOffsetY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get fill pattern offset y\r\n * var patternOffsetY = shape.fillPatternOffsetY();\r\n *\r\n * // set fill pattern offset y\r\n * shape.fillPatternOffsetY(10);\r\n */\r\n Factory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\r\n /**\r\n * get/set fill pattern scale\r\n * @name Konva.Shape#fillPatternScale\r\n * @method\r\n * @param {Object} scale\r\n * @param {Number} scale.x\r\n * @param {Number} scale.y\r\n * @returns {Object}\r\n * @example\r\n * // get fill pattern scale\r\n * var patternScale = shape.fillPatternScale();\r\n *\r\n * // set fill pattern scale\r\n * shape.fillPatternScale({\r\n * x: 2,\r\n * y: 2\r\n * });\r\n */\r\n Factory.addGetterSetter(Shape, 'fillPatternScaleX', 1, getNumberValidator());\r\n /**\r\n * get/set fill pattern scale x\r\n * @name Konva.Shape#fillPatternScaleX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get fill pattern scale x\r\n * var patternScaleX = shape.fillPatternScaleX();\r\n *\r\n * // set fill pattern scale x\r\n * shape.fillPatternScaleX(2);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillPatternScaleY', 1, getNumberValidator());\r\n /**\r\n * get/set fill pattern scale y\r\n * @name Konva.Shape#fillPatternScaleY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get fill pattern scale y\r\n * var patternScaleY = shape.fillPatternScaleY();\r\n *\r\n * // set fill pattern scale y\r\n * shape.fillPatternScaleY(2);\r\n */\r\n Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\r\n 'x',\r\n 'y',\r\n ]);\r\n /**\r\n * get/set fill linear gradient start point\r\n * @name Konva.Shape#fillLinearGradientStartPoint\r\n * @method\r\n * @param {Object} startPoint\r\n * @param {Number} startPoint.x\r\n * @param {Number} startPoint.y\r\n * @returns {Object}\r\n * @example\r\n * // get fill linear gradient start point\r\n * var startPoint = shape.fillLinearGradientStartPoint();\r\n *\r\n * // set fill linear gradient start point\r\n * shape.fillLinearGradientStartPoint({\r\n * x: 20,\r\n * y: 10\r\n * });\r\n */\r\n Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\r\n 'x',\r\n 'y',\r\n ]);\r\n /**\r\n * get/set stroke linear gradient start point\r\n * @name Konva.Shape#strokeLinearGradientStartPoint\r\n * @method\r\n * @param {Object} startPoint\r\n * @param {Number} startPoint.x\r\n * @param {Number} startPoint.y\r\n * @returns {Object}\r\n * @example\r\n * // get stroke linear gradient start point\r\n * var startPoint = shape.strokeLinearGradientStartPoint();\r\n *\r\n * // set stroke linear gradient start point\r\n * shape.strokeLinearGradientStartPoint({\r\n * x: 20,\r\n * y: 10\r\n * });\r\n */\r\n Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\r\n /**\r\n * get/set fill linear gradient start point x\r\n * @name Konva.Shape#fillLinearGradientStartPointX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get fill linear gradient start point x\r\n * var startPointX = shape.fillLinearGradientStartPointX();\r\n *\r\n * // set fill linear gradient start point x\r\n * shape.fillLinearGradientStartPointX(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\r\n /**\r\n * get/set stroke linear gradient start point x\r\n * @name Konva.Shape#linearLinearGradientStartPointX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get stroke linear gradient start point x\r\n * var startPointX = shape.strokeLinearGradientStartPointX();\r\n *\r\n * // set stroke linear gradient start point x\r\n * shape.strokeLinearGradientStartPointX(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\r\n /**\r\n * get/set fill linear gradient start point y\r\n * @name Konva.Shape#fillLinearGradientStartPointY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get fill linear gradient start point y\r\n * var startPointY = shape.fillLinearGradientStartPointY();\r\n *\r\n * // set fill linear gradient start point y\r\n * shape.fillLinearGradientStartPointY(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\r\n /**\r\n * get/set stroke linear gradient start point y\r\n * @name Konva.Shape#strokeLinearGradientStartPointY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get stroke linear gradient start point y\r\n * var startPointY = shape.strokeLinearGradientStartPointY();\r\n *\r\n * // set stroke linear gradient start point y\r\n * shape.strokeLinearGradientStartPointY(20);\r\n */\r\n Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\r\n 'x',\r\n 'y',\r\n ]);\r\n /**\r\n * get/set fill linear gradient end point\r\n * @name Konva.Shape#fillLinearGradientEndPoint\r\n * @method\r\n * @param {Object} endPoint\r\n * @param {Number} endPoint.x\r\n * @param {Number} endPoint.y\r\n * @returns {Object}\r\n * @example\r\n * // get fill linear gradient end point\r\n * var endPoint = shape.fillLinearGradientEndPoint();\r\n *\r\n * // set fill linear gradient end point\r\n * shape.fillLinearGradientEndPoint({\r\n * x: 20,\r\n * y: 10\r\n * });\r\n */\r\n Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\r\n 'x',\r\n 'y',\r\n ]);\r\n /**\r\n * get/set stroke linear gradient end point\r\n * @name Konva.Shape#strokeLinearGradientEndPoint\r\n * @method\r\n * @param {Object} endPoint\r\n * @param {Number} endPoint.x\r\n * @param {Number} endPoint.y\r\n * @returns {Object}\r\n * @example\r\n * // get stroke linear gradient end point\r\n * var endPoint = shape.strokeLinearGradientEndPoint();\r\n *\r\n * // set stroke linear gradient end point\r\n * shape.strokeLinearGradientEndPoint({\r\n * x: 20,\r\n * y: 10\r\n * });\r\n */\r\n Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\r\n /**\r\n * get/set fill linear gradient end point x\r\n * @name Konva.Shape#fillLinearGradientEndPointX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get fill linear gradient end point x\r\n * var endPointX = shape.fillLinearGradientEndPointX();\r\n *\r\n * // set fill linear gradient end point x\r\n * shape.fillLinearGradientEndPointX(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\r\n /**\r\n * get/set fill linear gradient end point x\r\n * @name Konva.Shape#strokeLinearGradientEndPointX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get stroke linear gradient end point x\r\n * var endPointX = shape.strokeLinearGradientEndPointX();\r\n *\r\n * // set stroke linear gradient end point x\r\n * shape.strokeLinearGradientEndPointX(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\r\n /**\r\n * get/set fill linear gradient end point y\r\n * @name Konva.Shape#fillLinearGradientEndPointY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get fill linear gradient end point y\r\n * var endPointY = shape.fillLinearGradientEndPointY();\r\n *\r\n * // set fill linear gradient end point y\r\n * shape.fillLinearGradientEndPointY(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\r\n /**\r\n * get/set stroke linear gradient end point y\r\n * @name Konva.Shape#strokeLinearGradientEndPointY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get stroke linear gradient end point y\r\n * var endPointY = shape.strokeLinearGradientEndPointY();\r\n *\r\n * // set stroke linear gradient end point y\r\n * shape.strokeLinearGradientEndPointY(20);\r\n */\r\n Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\r\n 'x',\r\n 'y',\r\n ]);\r\n /**\r\n * get/set fill radial gradient start point\r\n * @name Konva.Shape#fillRadialGradientStartPoint\r\n * @method\r\n * @param {Object} startPoint\r\n * @param {Number} startPoint.x\r\n * @param {Number} startPoint.y\r\n * @returns {Object}\r\n * @example\r\n * // get fill radial gradient start point\r\n * var startPoint = shape.fillRadialGradientStartPoint();\r\n *\r\n * // set fill radial gradient start point\r\n * shape.fillRadialGradientStartPoint({\r\n * x: 20,\r\n * y: 10\r\n * });\r\n */\r\n Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\r\n /**\r\n * get/set fill radial gradient start point x\r\n * @name Konva.Shape#fillRadialGradientStartPointX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get fill radial gradient start point x\r\n * var startPointX = shape.fillRadialGradientStartPointX();\r\n *\r\n * // set fill radial gradient start point x\r\n * shape.fillRadialGradientStartPointX(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\r\n /**\r\n * get/set fill radial gradient start point y\r\n * @name Konva.Shape#fillRadialGradientStartPointY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get fill radial gradient start point y\r\n * var startPointY = shape.fillRadialGradientStartPointY();\r\n *\r\n * // set fill radial gradient start point y\r\n * shape.fillRadialGradientStartPointY(20);\r\n */\r\n Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\r\n 'x',\r\n 'y',\r\n ]);\r\n /**\r\n * get/set fill radial gradient end point\r\n * @name Konva.Shape#fillRadialGradientEndPoint\r\n * @method\r\n * @param {Object} endPoint\r\n * @param {Number} endPoint.x\r\n * @param {Number} endPoint.y\r\n * @returns {Object}\r\n * @example\r\n * // get fill radial gradient end point\r\n * var endPoint = shape.fillRadialGradientEndPoint();\r\n *\r\n * // set fill radial gradient end point\r\n * shape.fillRadialGradientEndPoint({\r\n * x: 20,\r\n * y: 10\r\n * });\r\n */\r\n Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\r\n /**\r\n * get/set fill radial gradient end point x\r\n * @name Konva.Shape#fillRadialGradientEndPointX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get fill radial gradient end point x\r\n * var endPointX = shape.fillRadialGradientEndPointX();\r\n *\r\n * // set fill radial gradient end point x\r\n * shape.fillRadialGradientEndPointX(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\r\n /**\r\n * get/set fill radial gradient end point y\r\n * @name Konva.Shape#fillRadialGradientEndPointY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get fill radial gradient end point y\r\n * var endPointY = shape.fillRadialGradientEndPointY();\r\n *\r\n * // set fill radial gradient end point y\r\n * shape.fillRadialGradientEndPointY(20);\r\n */\r\n Factory.addGetterSetter(Shape, 'fillPatternRotation', 0);\r\n /**\r\n * get/set fill pattern rotation in degrees\r\n * @name Konva.Shape#fillPatternRotation\r\n * @method\r\n * @param {Number} rotation\r\n * @returns {Konva.Shape}\r\n * @example\r\n * // get fill pattern rotation\r\n * var patternRotation = shape.fillPatternRotation();\r\n *\r\n * // set fill pattern rotation\r\n * shape.fillPatternRotation(20);\r\n */\r\n Factory.backCompat(Shape, {\r\n dashArray: 'dash',\r\n getDashArray: 'getDash',\r\n setDashArray: 'getDash',\r\n drawFunc: 'sceneFunc',\r\n getDrawFunc: 'getSceneFunc',\r\n setDrawFunc: 'setSceneFunc',\r\n drawHitFunc: 'hitFunc',\r\n getDrawHitFunc: 'getHitFunc',\r\n setDrawHitFunc: 'setHitFunc',\r\n });\r\n Collection.mapMethods(Shape);\n\n // constants\r\n var HASH$1 = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', \r\n /*\r\n * 2 - 3 - 4\r\n * | |\r\n * 1 - 0 5\r\n * |\r\n * 8 - 7 - 6\r\n */\r\n INTERSECTION_OFFSETS = [\r\n { x: 0, y: 0 },\r\n { x: -1, y: -1 },\r\n { x: 1, y: -1 },\r\n { x: 1, y: 1 },\r\n { x: -1, y: 1 },\r\n ], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\r\n /**\r\n * Layer constructor. Layers are tied to their own canvas element and are used\r\n * to contain groups or shapes.\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Container\r\n * @param {Object} config\r\n * @param {Boolean} [config.clearBeforeDraw] set this property to false if you don't want\r\n * to clear the canvas before each layer draw. The default value is true.\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * * @param {Object} [config.clip] set clip\n * @param {Number} [config.clipX] set clip x\n * @param {Number} [config.clipY] set clip y\n * @param {Number} [config.clipWidth] set clip width\n * @param {Number} [config.clipHeight] set clip height\n * @param {Function} [config.clipFunc] set clip func\n\r\n * @example\r\n * var layer = new Konva.Layer();\r\n * stage.add(layer);\r\n * // now you can add shapes, groups into the layer\r\n */\r\n var Layer = /** @class */ (function (_super) {\r\n __extends(Layer, _super);\r\n function Layer(config) {\r\n var _this = _super.call(this, config) || this;\r\n _this.canvas = new SceneCanvas();\r\n _this.hitCanvas = new HitCanvas({\r\n pixelRatio: 1,\r\n });\r\n _this._waitingForDraw = false;\r\n _this.on('visibleChange.konva', _this._checkVisibility);\r\n _this._checkVisibility();\r\n _this.on('imageSmoothingEnabledChange.konva', _this._setSmoothEnabled);\r\n _this._setSmoothEnabled();\r\n return _this;\r\n }\r\n // for nodejs?\r\n Layer.prototype.createPNGStream = function () {\r\n var c = this.canvas._canvas;\r\n return c.createPNGStream();\r\n };\r\n /**\r\n * get layer canvas wrapper\r\n * @method\r\n * @name Konva.Layer#getCanvas\r\n */\r\n Layer.prototype.getCanvas = function () {\r\n return this.canvas;\r\n };\r\n /**\r\n * get layer hit canvas\r\n * @method\r\n * @name Konva.Layer#getHitCanvas\r\n */\r\n Layer.prototype.getHitCanvas = function () {\r\n return this.hitCanvas;\r\n };\r\n /**\r\n * get layer canvas context\r\n * @method\r\n * @name Konva.Layer#getContext\r\n */\r\n Layer.prototype.getContext = function () {\r\n return this.getCanvas().getContext();\r\n };\r\n /**\r\n * clear scene and hit canvas contexts tied to the layer.\r\n * This function doesn't remove any nodes. It just clear canvas element.\r\n * @method\r\n * @name Konva.Layer#clear\r\n * @param {Object} [bounds]\r\n * @param {Number} [bounds.x]\r\n * @param {Number} [bounds.y]\r\n * @param {Number} [bounds.width]\r\n * @param {Number} [bounds.height]\r\n * @example\r\n * layer.clear();\r\n * layer.clear({\r\n * x : 0,\r\n * y : 0,\r\n * width : 100,\r\n * height : 100\r\n * });\r\n */\r\n Layer.prototype.clear = function (bounds) {\r\n this.getContext().clear(bounds);\r\n this.getHitCanvas().getContext().clear(bounds);\r\n return this;\r\n };\r\n // extend Node.prototype.setZIndex\r\n Layer.prototype.setZIndex = function (index) {\r\n _super.prototype.setZIndex.call(this, index);\r\n var stage = this.getStage();\r\n if (stage) {\r\n stage.content.removeChild(this.getCanvas()._canvas);\r\n if (index < stage.children.length - 1) {\r\n stage.content.insertBefore(this.getCanvas()._canvas, stage.children[index + 1].getCanvas()._canvas);\r\n }\r\n else {\r\n stage.content.appendChild(this.getCanvas()._canvas);\r\n }\r\n }\r\n return this;\r\n };\r\n Layer.prototype.moveToTop = function () {\r\n Node.prototype.moveToTop.call(this);\r\n var stage = this.getStage();\r\n if (stage) {\r\n stage.content.removeChild(this.getCanvas()._canvas);\r\n stage.content.appendChild(this.getCanvas()._canvas);\r\n }\r\n return true;\r\n };\r\n Layer.prototype.moveUp = function () {\r\n var moved = Node.prototype.moveUp.call(this);\r\n if (!moved) {\r\n return false;\r\n }\r\n var stage = this.getStage();\r\n if (!stage) {\r\n return false;\r\n }\r\n stage.content.removeChild(this.getCanvas()._canvas);\r\n if (this.index < stage.children.length - 1) {\r\n stage.content.insertBefore(this.getCanvas()._canvas, stage.children[this.index + 1].getCanvas()._canvas);\r\n }\r\n else {\r\n stage.content.appendChild(this.getCanvas()._canvas);\r\n }\r\n return true;\r\n };\r\n // extend Node.prototype.moveDown\r\n Layer.prototype.moveDown = function () {\r\n if (Node.prototype.moveDown.call(this)) {\r\n var stage = this.getStage();\r\n if (stage) {\r\n var children = stage.children;\r\n stage.content.removeChild(this.getCanvas()._canvas);\r\n stage.content.insertBefore(this.getCanvas()._canvas, children[this.index + 1].getCanvas()._canvas);\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n // extend Node.prototype.moveToBottom\r\n Layer.prototype.moveToBottom = function () {\r\n if (Node.prototype.moveToBottom.call(this)) {\r\n var stage = this.getStage();\r\n if (stage) {\r\n var children = stage.children;\r\n stage.content.removeChild(this.getCanvas()._canvas);\r\n stage.content.insertBefore(this.getCanvas()._canvas, children[1].getCanvas()._canvas);\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n Layer.prototype.getLayer = function () {\r\n return this;\r\n };\r\n Layer.prototype.remove = function () {\r\n var _canvas = this.getCanvas()._canvas;\r\n Node.prototype.remove.call(this);\r\n if (_canvas && _canvas.parentNode && Util._isInDocument(_canvas)) {\r\n _canvas.parentNode.removeChild(_canvas);\r\n }\r\n return this;\r\n };\r\n Layer.prototype.getStage = function () {\r\n return this.parent;\r\n };\r\n Layer.prototype.setSize = function (_a) {\r\n var width = _a.width, height = _a.height;\r\n this.canvas.setSize(width, height);\r\n this.hitCanvas.setSize(width, height);\r\n this._setSmoothEnabled();\r\n return this;\r\n };\r\n Layer.prototype._validateAdd = function (child) {\r\n var type = child.getType();\r\n if (type !== 'Group' && type !== 'Shape') {\r\n Util.throw('You may only add groups and shapes to a layer.');\r\n }\r\n };\r\n Layer.prototype._toKonvaCanvas = function (config) {\r\n config = config || {};\r\n config.width = config.width || this.getWidth();\r\n config.height = config.height || this.getHeight();\r\n config.x = config.x !== undefined ? config.x : this.x();\r\n config.y = config.y !== undefined ? config.y : this.y();\r\n return Node.prototype._toKonvaCanvas.call(this, config);\r\n };\r\n Layer.prototype._checkVisibility = function () {\r\n var visible = this.visible();\r\n if (visible) {\r\n this.canvas._canvas.style.display = 'block';\r\n }\r\n else {\r\n this.canvas._canvas.style.display = 'none';\r\n }\r\n };\r\n Layer.prototype._setSmoothEnabled = function () {\r\n this.getContext()._context.imageSmoothingEnabled = this.imageSmoothingEnabled();\r\n };\r\n /**\r\n * get/set width of layer. getter return width of stage. setter doing nothing.\r\n * if you want change width use `stage.width(value);`\r\n * @name Konva.Layer#width\r\n * @method\r\n * @returns {Number}\r\n * @example\r\n * var width = layer.width();\r\n */\r\n Layer.prototype.getWidth = function () {\r\n if (this.parent) {\r\n return this.parent.width();\r\n }\r\n };\r\n Layer.prototype.setWidth = function () {\r\n Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\r\n };\r\n /**\r\n * get/set height of layer.getter return height of stage. setter doing nothing.\r\n * if you want change height use `stage.height(value);`\r\n * @name Konva.Layer#height\r\n * @method\r\n * @returns {Number}\r\n * @example\r\n * var height = layer.height();\r\n */\r\n Layer.prototype.getHeight = function () {\r\n if (this.parent) {\r\n return this.parent.height();\r\n }\r\n };\r\n Layer.prototype.setHeight = function () {\r\n Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\r\n };\r\n /**\r\n * batch draw. this function will not do immediate draw\r\n * but it will schedule drawing to next tick (requestAnimFrame)\r\n * @method\r\n * @name Konva.Layer#batchDraw\r\n * @return {Konva.Layer} this\r\n */\r\n Layer.prototype.batchDraw = function () {\r\n var _this = this;\r\n if (!this._waitingForDraw) {\r\n this._waitingForDraw = true;\r\n Util.requestAnimFrame(function () {\r\n _this.draw();\r\n _this._waitingForDraw = false;\r\n });\r\n }\r\n return this;\r\n };\r\n /**\r\n * get visible intersection shape. This is the preferred\r\n * method for determining if a point intersects a shape or not\r\n * also you may pass optional selector parameter to return ancestor of intersected shape\r\n * @method\r\n * @name Konva.Layer#getIntersection\r\n * @param {Object} pos\r\n * @param {Number} pos.x\r\n * @param {Number} pos.y\r\n * @param {String} [selector]\r\n * @returns {Konva.Node}\r\n * @example\r\n * var shape = layer.getIntersection({x: 50, y: 50});\r\n * // or if you interested in shape parent:\r\n * var group = layer.getIntersection({x: 50, y: 50}, 'Group');\r\n */\r\n Layer.prototype.getIntersection = function (pos, selector) {\r\n var obj, i, intersectionOffset, shape;\r\n if (!this.isListening() || !this.isVisible()) {\r\n return null;\r\n }\r\n // in some cases antialiased area may be bigger than 1px\r\n // it is possible if we will cache node, then scale it a lot\r\n var spiralSearchDistance = 1;\r\n var continueSearch = false;\r\n while (true) {\r\n for (i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\r\n intersectionOffset = INTERSECTION_OFFSETS[i];\r\n obj = this._getIntersection({\r\n x: pos.x + intersectionOffset.x * spiralSearchDistance,\r\n y: pos.y + intersectionOffset.y * spiralSearchDistance,\r\n });\r\n shape = obj.shape;\r\n if (shape && selector) {\r\n return shape.findAncestor(selector, true);\r\n }\r\n else if (shape) {\r\n return shape;\r\n }\r\n // we should continue search if we found antialiased pixel\r\n // that means our node somewhere very close\r\n continueSearch = !!obj.antialiased;\r\n // stop search if found empty pixel\r\n if (!obj.antialiased) {\r\n break;\r\n }\r\n }\r\n // if no shape, and no antialiased pixel, we should end searching\r\n if (continueSearch) {\r\n spiralSearchDistance += 1;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n };\r\n Layer.prototype._getIntersection = function (pos) {\r\n var ratio = this.hitCanvas.pixelRatio;\r\n var p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data, p3 = p[3], colorKey, shape;\r\n // fully opaque pixel\r\n if (p3 === 255) {\r\n colorKey = Util._rgbToHex(p[0], p[1], p[2]);\r\n shape = shapes[HASH$1 + colorKey];\r\n if (shape) {\r\n return {\r\n shape: shape,\r\n };\r\n }\r\n return {\r\n antialiased: true,\r\n };\r\n }\r\n else if (p3 > 0) {\r\n // antialiased pixel\r\n return {\r\n antialiased: true,\r\n };\r\n }\r\n // empty pixel\r\n return {};\r\n };\r\n Layer.prototype.drawScene = function (can, top) {\r\n var layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\r\n this._fire(BEFORE_DRAW, {\r\n node: this,\r\n });\r\n if (this.clearBeforeDraw()) {\r\n canvas.getContext().clear();\r\n }\r\n Container.prototype.drawScene.call(this, canvas, top);\r\n this._fire(DRAW, {\r\n node: this,\r\n });\r\n return this;\r\n };\r\n Layer.prototype.drawHit = function (can, top) {\r\n var layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\r\n if (layer && layer.clearBeforeDraw()) {\r\n layer.getHitCanvas().getContext().clear();\r\n }\r\n Container.prototype.drawHit.call(this, canvas, top);\r\n return this;\r\n };\r\n /**\r\n * enable hit graph. **DEPRECATED!** Use `layer.listening(true)` instead.\r\n * @name Konva.Layer#enableHitGraph\r\n * @method\r\n * @returns {Layer}\r\n */\r\n Layer.prototype.enableHitGraph = function () {\r\n this.hitGraphEnabled(true);\r\n return this;\r\n };\r\n /**\r\n * disable hit graph. **DEPRECATED!** Use `layer.listening(false)` instead.\r\n * @name Konva.Layer#disableHitGraph\r\n * @method\r\n * @returns {Layer}\r\n */\r\n Layer.prototype.disableHitGraph = function () {\r\n this.hitGraphEnabled(false);\r\n return this;\r\n };\r\n Layer.prototype.setHitGraphEnabled = function (val) {\r\n Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\r\n this.listening(val);\r\n };\r\n Layer.prototype.getHitGraphEnabled = function (val) {\r\n Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\r\n return this.listening();\r\n };\r\n /**\r\n * Show or hide hit canvas over the stage. May be useful for debugging custom hitFunc\r\n * @name Konva.Layer#toggleHitCanvas\r\n * @method\r\n */\r\n Layer.prototype.toggleHitCanvas = function () {\r\n if (!this.parent) {\r\n return;\r\n }\r\n var parent = this.parent;\r\n var added = !!this.hitCanvas._canvas.parentNode;\r\n if (added) {\r\n parent.content.removeChild(this.hitCanvas._canvas);\r\n }\r\n else {\r\n parent.content.appendChild(this.hitCanvas._canvas);\r\n }\r\n };\r\n return Layer;\r\n }(Container));\r\n Layer.prototype.nodeType = 'Layer';\r\n _registerNode(Layer);\r\n /**\r\n * get/set imageSmoothingEnabled flag\r\n * For more info see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled\r\n * @name Konva.Layer#imageSmoothingEnabled\r\n * @method\r\n * @param {Boolean} imageSmoothingEnabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get imageSmoothingEnabled flag\r\n * var imageSmoothingEnabled = layer.imageSmoothingEnabled();\r\n *\r\n * layer.imageSmoothingEnabled(false);\r\n *\r\n * layer.imageSmoothingEnabled(true);\r\n */\r\n Factory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\r\n /**\r\n * get/set clearBeforeDraw flag which determines if the layer is cleared or not\r\n * before drawing\r\n * @name Konva.Layer#clearBeforeDraw\r\n * @method\r\n * @param {Boolean} clearBeforeDraw\r\n * @returns {Boolean}\r\n * @example\r\n * // get clearBeforeDraw flag\r\n * var clearBeforeDraw = layer.clearBeforeDraw();\r\n *\r\n * // disable clear before draw\r\n * layer.clearBeforeDraw(false);\r\n *\r\n * // enable clear before draw\r\n * layer.clearBeforeDraw(true);\r\n */\r\n Factory.addGetterSetter(Layer, 'clearBeforeDraw', true);\r\n Factory.addGetterSetter(Layer, 'hitGraphEnabled', true, getBooleanValidator());\r\n /**\r\n * get/set hitGraphEnabled flag. **DEPRECATED!** Use `layer.listening(false)` instead.\r\n * Disabling the hit graph will greatly increase\r\n * draw performance because the hit graph will not be redrawn each time the layer is\r\n * drawn. This, however, also disables mouse/touch event detection\r\n * @name Konva.Layer#hitGraphEnabled\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get hitGraphEnabled flag\r\n * var hitGraphEnabled = layer.hitGraphEnabled();\r\n *\r\n * // disable hit graph\r\n * layer.hitGraphEnabled(false);\r\n *\r\n * // enable hit graph\r\n * layer.hitGraphEnabled(true);\r\n */\r\n Collection.mapMethods(Layer);\n\n /**\r\n * FastLayer constructor. **DEPRECATED!** Please use `Konva.Layer({ listening: false})` instead. Layers are tied to their own canvas element and are used\r\n * to contain shapes only. If you don't need node nesting, mouse and touch interactions,\r\n * or event pub/sub, you should use FastLayer instead of Layer to create your layers.\r\n * It renders about 2x faster than normal layers.\r\n *\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Layer\r\n * * @param {Object} [config.clip] set clip\n * @param {Number} [config.clipX] set clip x\n * @param {Number} [config.clipY] set clip y\n * @param {Number} [config.clipWidth] set clip width\n * @param {Number} [config.clipHeight] set clip height\n * @param {Function} [config.clipFunc] set clip func\n\r\n * @example\r\n * var layer = new Konva.FastLayer();\r\n */\r\n var FastLayer = /** @class */ (function (_super) {\r\n __extends(FastLayer, _super);\r\n function FastLayer(attrs) {\r\n var _this = _super.call(this, attrs) || this;\r\n _this.listening(false);\r\n Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\r\n return _this;\r\n }\r\n return FastLayer;\r\n }(Layer));\r\n FastLayer.prototype.nodeType = 'FastLayer';\r\n _registerNode(FastLayer);\r\n Collection.mapMethods(FastLayer);\n\n /**\r\n * Group constructor. Groups are used to contain shapes or other groups.\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Container\r\n * @param {Object} config\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * * @param {Object} [config.clip] set clip\n * @param {Number} [config.clipX] set clip x\n * @param {Number} [config.clipY] set clip y\n * @param {Number} [config.clipWidth] set clip width\n * @param {Number} [config.clipHeight] set clip height\n * @param {Function} [config.clipFunc] set clip func\n\r\n * @example\r\n * var group = new Konva.Group();\r\n */\r\n var Group = /** @class */ (function (_super) {\r\n __extends(Group, _super);\r\n function Group() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Group.prototype._validateAdd = function (child) {\r\n var type = child.getType();\r\n if (type !== 'Group' && type !== 'Shape') {\r\n Util.throw('You may only add groups and shapes to groups.');\r\n }\r\n };\r\n return Group;\r\n }(Container));\r\n Group.prototype.nodeType = 'Group';\r\n _registerNode(Group);\r\n Collection.mapMethods(Group);\n\n var now = (function () {\r\n if (glob.performance && glob.performance.now) {\r\n return function () {\r\n return glob.performance.now();\r\n };\r\n }\r\n return function () {\r\n return new Date().getTime();\r\n };\r\n })();\r\n /**\r\n * Animation constructor.\r\n * @constructor\r\n * @memberof Konva\r\n * @param {AnimationFn} func function executed on each animation frame. The function is passed a frame object, which contains\r\n * timeDiff, lastTime, time, and frameRate properties. The timeDiff property is the number of milliseconds that have passed\r\n * since the last animation frame. The time property is the time in milliseconds that elapsed from the moment the animation started\r\n * to the current animation frame. The lastTime property is a `time` value from the previous frame. The frameRate property is the current frame rate in frames / second.\r\n * Return false from function, if you don't need to redraw layer/layers on some frames.\r\n * @param {Konva.Layer|Array} [layers] layer(s) to be redrawn on each animation frame. Can be a layer, an array of layers, or null.\r\n * Not specifying a node will result in no redraw.\r\n * @example\r\n * // move a node to the right at 50 pixels / second\r\n * var velocity = 50;\r\n *\r\n * var anim = new Konva.Animation(function(frame) {\r\n * var dist = velocity * (frame.timeDiff / 1000);\r\n * node.move({x: dist, y: 0});\r\n * }, layer);\r\n *\r\n * anim.start();\r\n */\r\n var Animation = /** @class */ (function () {\r\n function Animation(func, layers) {\r\n this.id = Animation.animIdCounter++;\r\n this.frame = {\r\n time: 0,\r\n timeDiff: 0,\r\n lastTime: now(),\r\n frameRate: 0\r\n };\r\n this.func = func;\r\n this.setLayers(layers);\r\n }\r\n /**\r\n * set layers to be redrawn on each animation frame\r\n * @method\r\n * @name Konva.Animation#setLayers\r\n * @param {Konva.Layer|Array} [layers] layer(s) to be redrawn. Can be a layer, an array of layers, or null. Not specifying a node will result in no redraw.\r\n * @return {Konva.Animation} this\r\n */\r\n Animation.prototype.setLayers = function (layers) {\r\n var lays = [];\r\n // if passing in no layers\r\n if (!layers) {\r\n lays = [];\r\n }\r\n else if (layers.length > 0) {\r\n // if passing in an array of Layers\r\n // NOTE: layers could be an array or Konva.Collection. for simplicity, I'm just inspecting\r\n // the length property to check for both cases\r\n lays = layers;\r\n }\r\n else {\r\n // if passing in a Layer\r\n lays = [layers];\r\n }\r\n this.layers = lays;\r\n return this;\r\n };\r\n /**\r\n * get layers\r\n * @method\r\n * @name Konva.Animation#getLayers\r\n * @return {Array} Array of Konva.Layer\r\n */\r\n Animation.prototype.getLayers = function () {\r\n return this.layers;\r\n };\r\n /**\r\n * add layer. Returns true if the layer was added, and false if it was not\r\n * @method\r\n * @name Konva.Animation#addLayer\r\n * @param {Konva.Layer} layer to add\r\n * @return {Bool} true if layer is added to animation, otherwise false\r\n */\r\n Animation.prototype.addLayer = function (layer) {\r\n var layers = this.layers, len = layers.length, n;\r\n // don't add the layer if it already exists\r\n for (n = 0; n < len; n++) {\r\n if (layers[n]._id === layer._id) {\r\n return false;\r\n }\r\n }\r\n this.layers.push(layer);\r\n return true;\r\n };\r\n /**\r\n * determine if animation is running or not. returns true or false\r\n * @method\r\n * @name Konva.Animation#isRunning\r\n * @return {Bool} is animation running?\r\n */\r\n Animation.prototype.isRunning = function () {\r\n var a = Animation, animations = a.animations, len = animations.length, n;\r\n for (n = 0; n < len; n++) {\r\n if (animations[n].id === this.id) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * start animation\r\n * @method\r\n * @name Konva.Animation#start\r\n * @return {Konva.Animation} this\r\n */\r\n Animation.prototype.start = function () {\r\n this.stop();\r\n this.frame.timeDiff = 0;\r\n this.frame.lastTime = now();\r\n Animation._addAnimation(this);\r\n return this;\r\n };\r\n /**\r\n * stop animation\r\n * @method\r\n * @name Konva.Animation#stop\r\n * @return {Konva.Animation} this\r\n */\r\n Animation.prototype.stop = function () {\r\n Animation._removeAnimation(this);\r\n return this;\r\n };\r\n Animation.prototype._updateFrameObject = function (time) {\r\n this.frame.timeDiff = time - this.frame.lastTime;\r\n this.frame.lastTime = time;\r\n this.frame.time += this.frame.timeDiff;\r\n this.frame.frameRate = 1000 / this.frame.timeDiff;\r\n };\r\n Animation._addAnimation = function (anim) {\r\n this.animations.push(anim);\r\n this._handleAnimation();\r\n };\r\n Animation._removeAnimation = function (anim) {\r\n var id = anim.id, animations = this.animations, len = animations.length, n;\r\n for (n = 0; n < len; n++) {\r\n if (animations[n].id === id) {\r\n this.animations.splice(n, 1);\r\n break;\r\n }\r\n }\r\n };\r\n Animation._runFrames = function () {\r\n var layerHash = {}, animations = this.animations, anim, layers, func, n, i, layersLen, layer, key, needRedraw;\r\n /*\r\n * loop through all animations and execute animation\r\n * function. if the animation object has specified node,\r\n * we can add the node to the nodes hash to eliminate\r\n * drawing the same node multiple times. The node property\r\n * can be the stage itself or a layer\r\n */\r\n /*\r\n * WARNING: don't cache animations.length because it could change while\r\n * the for loop is running, causing a JS error\r\n */\r\n for (n = 0; n < animations.length; n++) {\r\n anim = animations[n];\r\n layers = anim.layers;\r\n func = anim.func;\r\n anim._updateFrameObject(now());\r\n layersLen = layers.length;\r\n // if animation object has a function, execute it\r\n if (func) {\r\n // allow anim bypassing drawing\r\n needRedraw = func.call(anim, anim.frame) !== false;\r\n }\r\n else {\r\n needRedraw = true;\r\n }\r\n if (!needRedraw) {\r\n continue;\r\n }\r\n for (i = 0; i < layersLen; i++) {\r\n layer = layers[i];\r\n if (layer._id !== undefined) {\r\n layerHash[layer._id] = layer;\r\n }\r\n }\r\n }\r\n for (key in layerHash) {\r\n if (!layerHash.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n layerHash[key].draw();\r\n }\r\n };\r\n Animation._animationLoop = function () {\r\n var Anim = Animation;\r\n if (Anim.animations.length) {\r\n Anim._runFrames();\r\n requestAnimationFrame(Anim._animationLoop);\r\n }\r\n else {\r\n Anim.animRunning = false;\r\n }\r\n };\r\n Animation._handleAnimation = function () {\r\n if (!this.animRunning) {\r\n this.animRunning = true;\r\n requestAnimationFrame(this._animationLoop);\r\n }\r\n };\r\n Animation.animations = [];\r\n Animation.animIdCounter = 0;\r\n Animation.animRunning = false;\r\n return Animation;\r\n }());\n\n var blacklist = {\r\n node: 1,\r\n duration: 1,\r\n easing: 1,\r\n onFinish: 1,\r\n yoyo: 1,\r\n }, PAUSED = 1, PLAYING = 2, REVERSING = 3, idCounter$1 = 0, colorAttrs = ['fill', 'stroke', 'shadowColor'];\r\n var TweenEngine = /** @class */ (function () {\r\n function TweenEngine(prop, propFunc, func, begin, finish, duration, yoyo) {\r\n this.prop = prop;\r\n this.propFunc = propFunc;\r\n this.begin = begin;\r\n this._pos = begin;\r\n this.duration = duration;\r\n this._change = 0;\r\n this.prevPos = 0;\r\n this.yoyo = yoyo;\r\n this._time = 0;\r\n this._position = 0;\r\n this._startTime = 0;\r\n this._finish = 0;\r\n this.func = func;\r\n this._change = finish - this.begin;\r\n this.pause();\r\n }\r\n TweenEngine.prototype.fire = function (str) {\r\n var handler = this[str];\r\n if (handler) {\r\n handler();\r\n }\r\n };\r\n TweenEngine.prototype.setTime = function (t) {\r\n if (t > this.duration) {\r\n if (this.yoyo) {\r\n this._time = this.duration;\r\n this.reverse();\r\n }\r\n else {\r\n this.finish();\r\n }\r\n }\r\n else if (t < 0) {\r\n if (this.yoyo) {\r\n this._time = 0;\r\n this.play();\r\n }\r\n else {\r\n this.reset();\r\n }\r\n }\r\n else {\r\n this._time = t;\r\n this.update();\r\n }\r\n };\r\n TweenEngine.prototype.getTime = function () {\r\n return this._time;\r\n };\r\n TweenEngine.prototype.setPosition = function (p) {\r\n this.prevPos = this._pos;\r\n this.propFunc(p);\r\n this._pos = p;\r\n };\r\n TweenEngine.prototype.getPosition = function (t) {\r\n if (t === undefined) {\r\n t = this._time;\r\n }\r\n return this.func(t, this.begin, this._change, this.duration);\r\n };\r\n TweenEngine.prototype.play = function () {\r\n this.state = PLAYING;\r\n this._startTime = this.getTimer() - this._time;\r\n this.onEnterFrame();\r\n this.fire('onPlay');\r\n };\r\n TweenEngine.prototype.reverse = function () {\r\n this.state = REVERSING;\r\n this._time = this.duration - this._time;\r\n this._startTime = this.getTimer() - this._time;\r\n this.onEnterFrame();\r\n this.fire('onReverse');\r\n };\r\n TweenEngine.prototype.seek = function (t) {\r\n this.pause();\r\n this._time = t;\r\n this.update();\r\n this.fire('onSeek');\r\n };\r\n TweenEngine.prototype.reset = function () {\r\n this.pause();\r\n this._time = 0;\r\n this.update();\r\n this.fire('onReset');\r\n };\r\n TweenEngine.prototype.finish = function () {\r\n this.pause();\r\n this._time = this.duration;\r\n this.update();\r\n this.fire('onFinish');\r\n };\r\n TweenEngine.prototype.update = function () {\r\n this.setPosition(this.getPosition(this._time));\r\n this.fire('onUpdate');\r\n };\r\n TweenEngine.prototype.onEnterFrame = function () {\r\n var t = this.getTimer() - this._startTime;\r\n if (this.state === PLAYING) {\r\n this.setTime(t);\r\n }\r\n else if (this.state === REVERSING) {\r\n this.setTime(this.duration - t);\r\n }\r\n };\r\n TweenEngine.prototype.pause = function () {\r\n this.state = PAUSED;\r\n this.fire('onPause');\r\n };\r\n TweenEngine.prototype.getTimer = function () {\r\n return new Date().getTime();\r\n };\r\n return TweenEngine;\r\n }());\r\n /**\r\n * Tween constructor. Tweens enable you to animate a node between the current state and a new state.\r\n * You can play, pause, reverse, seek, reset, and finish tweens. By default, tweens are animated using\r\n * a linear easing. For more tweening options, check out {@link Konva.Easings}\r\n * @constructor\r\n * @memberof Konva\r\n * @example\r\n * // instantiate new tween which fully rotates a node in 1 second\r\n * var tween = new Konva.Tween({\r\n * // list of tween specific properties\r\n * node: node,\r\n * duration: 1,\r\n * easing: Konva.Easings.EaseInOut,\r\n * onUpdate: () => console.log('node attrs updated')\r\n * onFinish: () => console.log('finished'),\r\n * // set new values for any attributes of a passed node\r\n * rotation: 360,\r\n * fill: 'red'\r\n * });\r\n *\r\n * // play tween\r\n * tween.play();\r\n *\r\n * // pause tween\r\n * tween.pause();\r\n */\r\n var Tween = /** @class */ (function () {\r\n function Tween(config) {\r\n var that = this, node = config.node, nodeId = node._id, duration, easing = config.easing || Easings.Linear, yoyo = !!config.yoyo, key;\r\n if (typeof config.duration === 'undefined') {\r\n duration = 0.3;\r\n }\r\n else if (config.duration === 0) {\r\n // zero is bad value for duration\r\n duration = 0.001;\r\n }\r\n else {\r\n duration = config.duration;\r\n }\r\n this.node = node;\r\n this._id = idCounter$1++;\r\n var layers = node.getLayer() ||\r\n (node instanceof Konva['Stage'] ? node.getLayers() : null);\r\n if (!layers) {\r\n Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\r\n }\r\n this.anim = new Animation(function () {\r\n that.tween.onEnterFrame();\r\n }, layers);\r\n this.tween = new TweenEngine(key, function (i) {\r\n that._tweenFunc(i);\r\n }, easing, 0, 1, duration * 1000, yoyo);\r\n this._addListeners();\r\n // init attrs map\r\n if (!Tween.attrs[nodeId]) {\r\n Tween.attrs[nodeId] = {};\r\n }\r\n if (!Tween.attrs[nodeId][this._id]) {\r\n Tween.attrs[nodeId][this._id] = {};\r\n }\r\n // init tweens map\r\n if (!Tween.tweens[nodeId]) {\r\n Tween.tweens[nodeId] = {};\r\n }\r\n for (key in config) {\r\n if (blacklist[key] === undefined) {\r\n this._addAttr(key, config[key]);\r\n }\r\n }\r\n this.reset();\r\n // callbacks\r\n this.onFinish = config.onFinish;\r\n this.onReset = config.onReset;\r\n this.onUpdate = config.onUpdate;\r\n }\r\n Tween.prototype._addAttr = function (key, end) {\r\n var node = this.node, nodeId = node._id, start, diff, tweenId, n, len, trueEnd, trueStart, endRGBA;\r\n // remove conflict from tween map if it exists\r\n tweenId = Tween.tweens[nodeId][key];\r\n if (tweenId) {\r\n delete Tween.attrs[nodeId][tweenId][key];\r\n }\r\n // add to tween map\r\n start = node.getAttr(key);\r\n if (Util._isArray(end)) {\r\n diff = [];\r\n len = Math.max(end.length, start.length);\r\n if (key === 'points' && end.length !== start.length) {\r\n // before tweening points we need to make sure that start.length === end.length\r\n // Util._prepareArrayForTween thinking that end.length > start.length\r\n if (end.length > start.length) {\r\n // so in this case we will increase number of starting points\r\n trueStart = start;\r\n start = Util._prepareArrayForTween(start, end, node.closed());\r\n }\r\n else {\r\n // in this case we will increase number of eding points\r\n trueEnd = end;\r\n end = Util._prepareArrayForTween(end, start, node.closed());\r\n }\r\n }\r\n if (key.indexOf('fill') === 0) {\r\n for (n = 0; n < len; n++) {\r\n if (n % 2 === 0) {\r\n diff.push(end[n] - start[n]);\r\n }\r\n else {\r\n var startRGBA = Util.colorToRGBA(start[n]);\r\n endRGBA = Util.colorToRGBA(end[n]);\r\n start[n] = startRGBA;\r\n diff.push({\r\n r: endRGBA.r - startRGBA.r,\r\n g: endRGBA.g - startRGBA.g,\r\n b: endRGBA.b - startRGBA.b,\r\n a: endRGBA.a - startRGBA.a,\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n for (n = 0; n < len; n++) {\r\n diff.push(end[n] - start[n]);\r\n }\r\n }\r\n }\r\n else if (colorAttrs.indexOf(key) !== -1) {\r\n start = Util.colorToRGBA(start);\r\n endRGBA = Util.colorToRGBA(end);\r\n diff = {\r\n r: endRGBA.r - start.r,\r\n g: endRGBA.g - start.g,\r\n b: endRGBA.b - start.b,\r\n a: endRGBA.a - start.a,\r\n };\r\n }\r\n else {\r\n diff = end - start;\r\n }\r\n Tween.attrs[nodeId][this._id][key] = {\r\n start: start,\r\n diff: diff,\r\n end: end,\r\n trueEnd: trueEnd,\r\n trueStart: trueStart,\r\n };\r\n Tween.tweens[nodeId][key] = this._id;\r\n };\r\n Tween.prototype._tweenFunc = function (i) {\r\n var node = this.node, attrs = Tween.attrs[node._id][this._id], key, attr, start, diff, newVal, n, len, end;\r\n for (key in attrs) {\r\n attr = attrs[key];\r\n start = attr.start;\r\n diff = attr.diff;\r\n end = attr.end;\r\n if (Util._isArray(start)) {\r\n newVal = [];\r\n len = Math.max(start.length, end.length);\r\n if (key.indexOf('fill') === 0) {\r\n for (n = 0; n < len; n++) {\r\n if (n % 2 === 0) {\r\n newVal.push((start[n] || 0) + diff[n] * i);\r\n }\r\n else {\r\n newVal.push('rgba(' +\r\n Math.round(start[n].r + diff[n].r * i) +\r\n ',' +\r\n Math.round(start[n].g + diff[n].g * i) +\r\n ',' +\r\n Math.round(start[n].b + diff[n].b * i) +\r\n ',' +\r\n (start[n].a + diff[n].a * i) +\r\n ')');\r\n }\r\n }\r\n }\r\n else {\r\n for (n = 0; n < len; n++) {\r\n newVal.push((start[n] || 0) + diff[n] * i);\r\n }\r\n }\r\n }\r\n else if (colorAttrs.indexOf(key) !== -1) {\r\n newVal =\r\n 'rgba(' +\r\n Math.round(start.r + diff.r * i) +\r\n ',' +\r\n Math.round(start.g + diff.g * i) +\r\n ',' +\r\n Math.round(start.b + diff.b * i) +\r\n ',' +\r\n (start.a + diff.a * i) +\r\n ')';\r\n }\r\n else {\r\n newVal = start + diff * i;\r\n }\r\n node.setAttr(key, newVal);\r\n }\r\n };\r\n Tween.prototype._addListeners = function () {\r\n var _this = this;\r\n // start listeners\r\n this.tween.onPlay = function () {\r\n _this.anim.start();\r\n };\r\n this.tween.onReverse = function () {\r\n _this.anim.start();\r\n };\r\n // stop listeners\r\n this.tween.onPause = function () {\r\n _this.anim.stop();\r\n };\r\n this.tween.onFinish = function () {\r\n var node = _this.node;\r\n // after tweening points of line we need to set original end\r\n var attrs = Tween.attrs[node._id][_this._id];\r\n if (attrs.points && attrs.points.trueEnd) {\r\n node.setAttr('points', attrs.points.trueEnd);\r\n }\r\n if (_this.onFinish) {\r\n _this.onFinish.call(_this);\r\n }\r\n };\r\n this.tween.onReset = function () {\r\n var node = _this.node;\r\n // after tweening points of line we need to set original start\r\n var attrs = Tween.attrs[node._id][_this._id];\r\n if (attrs.points && attrs.points.trueStart) {\r\n node.points(attrs.points.trueStart);\r\n }\r\n if (_this.onReset) {\r\n _this.onReset();\r\n }\r\n };\r\n this.tween.onUpdate = function () {\r\n if (_this.onUpdate) {\r\n _this.onUpdate.call(_this);\r\n }\r\n };\r\n };\r\n /**\r\n * play\r\n * @method\r\n * @name Konva.Tween#play\r\n * @returns {Tween}\r\n */\r\n Tween.prototype.play = function () {\r\n this.tween.play();\r\n return this;\r\n };\r\n /**\r\n * reverse\r\n * @method\r\n * @name Konva.Tween#reverse\r\n * @returns {Tween}\r\n */\r\n Tween.prototype.reverse = function () {\r\n this.tween.reverse();\r\n return this;\r\n };\r\n /**\r\n * reset\r\n * @method\r\n * @name Konva.Tween#reset\r\n * @returns {Tween}\r\n */\r\n Tween.prototype.reset = function () {\r\n this.tween.reset();\r\n return this;\r\n };\r\n /**\r\n * seek\r\n * @method\r\n * @name Konva.Tween#seek(\r\n * @param {Integer} t time in seconds between 0 and the duration\r\n * @returns {Tween}\r\n */\r\n Tween.prototype.seek = function (t) {\r\n this.tween.seek(t * 1000);\r\n return this;\r\n };\r\n /**\r\n * pause\r\n * @method\r\n * @name Konva.Tween#pause\r\n * @returns {Tween}\r\n */\r\n Tween.prototype.pause = function () {\r\n this.tween.pause();\r\n return this;\r\n };\r\n /**\r\n * finish\r\n * @method\r\n * @name Konva.Tween#finish\r\n * @returns {Tween}\r\n */\r\n Tween.prototype.finish = function () {\r\n this.tween.finish();\r\n return this;\r\n };\r\n /**\r\n * destroy\r\n * @method\r\n * @name Konva.Tween#destroy\r\n */\r\n Tween.prototype.destroy = function () {\r\n var nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId], key;\r\n this.pause();\r\n for (key in attrs) {\r\n delete Tween.tweens[nodeId][key];\r\n }\r\n delete Tween.attrs[nodeId][thisId];\r\n };\r\n Tween.attrs = {};\r\n Tween.tweens = {};\r\n return Tween;\r\n }());\r\n /**\r\n * Tween node properties. Shorter usage of {@link Konva.Tween} object.\r\n *\r\n * @method Konva.Node#to\r\n * @param {Object} [params] tween params\r\n * @example\r\n *\r\n * circle.to({\r\n * x : 50,\r\n * duration : 0.5,\r\n * onUpdate: () => console.log('props updated'),\r\n * onFinish: () => console.log('finished'),\r\n * });\r\n */\r\n Node.prototype.to = function (params) {\r\n var onFinish = params.onFinish;\r\n params.node = this;\r\n params.onFinish = function () {\r\n this.destroy();\r\n if (onFinish) {\r\n onFinish();\r\n }\r\n };\r\n var tween = new Tween(params);\r\n tween.play();\r\n };\r\n /*\r\n * These eases were ported from an Adobe Flash tweening library to JavaScript\r\n * by Xaric\r\n */\r\n /**\r\n * @namespace Easings\r\n * @memberof Konva\r\n */\r\n var Easings = {\r\n /**\r\n * back ease in\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n BackEaseIn: function (t, b, c, d) {\r\n var s = 1.70158;\r\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\r\n },\r\n /**\r\n * back ease out\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n BackEaseOut: function (t, b, c, d) {\r\n var s = 1.70158;\r\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\r\n },\r\n /**\r\n * back ease in out\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n BackEaseInOut: function (t, b, c, d) {\r\n var s = 1.70158;\r\n if ((t /= d / 2) < 1) {\r\n return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\r\n }\r\n return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\r\n },\r\n /**\r\n * elastic ease in\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n ElasticEaseIn: function (t, b, c, d, a, p) {\r\n // added s = 0\r\n var s = 0;\r\n if (t === 0) {\r\n return b;\r\n }\r\n if ((t /= d) === 1) {\r\n return b + c;\r\n }\r\n if (!p) {\r\n p = d * 0.3;\r\n }\r\n if (!a || a < Math.abs(c)) {\r\n a = c;\r\n s = p / 4;\r\n }\r\n else {\r\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\r\n }\r\n return (-(a *\r\n Math.pow(2, 10 * (t -= 1)) *\r\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\r\n },\r\n /**\r\n * elastic ease out\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n ElasticEaseOut: function (t, b, c, d, a, p) {\r\n // added s = 0\r\n var s = 0;\r\n if (t === 0) {\r\n return b;\r\n }\r\n if ((t /= d) === 1) {\r\n return b + c;\r\n }\r\n if (!p) {\r\n p = d * 0.3;\r\n }\r\n if (!a || a < Math.abs(c)) {\r\n a = c;\r\n s = p / 4;\r\n }\r\n else {\r\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\r\n }\r\n return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\r\n c +\r\n b);\r\n },\r\n /**\r\n * elastic ease in out\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n ElasticEaseInOut: function (t, b, c, d, a, p) {\r\n // added s = 0\r\n var s = 0;\r\n if (t === 0) {\r\n return b;\r\n }\r\n if ((t /= d / 2) === 2) {\r\n return b + c;\r\n }\r\n if (!p) {\r\n p = d * (0.3 * 1.5);\r\n }\r\n if (!a || a < Math.abs(c)) {\r\n a = c;\r\n s = p / 4;\r\n }\r\n else {\r\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\r\n }\r\n if (t < 1) {\r\n return (-0.5 *\r\n (a *\r\n Math.pow(2, 10 * (t -= 1)) *\r\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\r\n b);\r\n }\r\n return (a *\r\n Math.pow(2, -10 * (t -= 1)) *\r\n Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\r\n 0.5 +\r\n c +\r\n b);\r\n },\r\n /**\r\n * bounce ease out\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n BounceEaseOut: function (t, b, c, d) {\r\n if ((t /= d) < 1 / 2.75) {\r\n return c * (7.5625 * t * t) + b;\r\n }\r\n else if (t < 2 / 2.75) {\r\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\r\n }\r\n else if (t < 2.5 / 2.75) {\r\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\r\n }\r\n else {\r\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\r\n }\r\n },\r\n /**\r\n * bounce ease in\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n BounceEaseIn: function (t, b, c, d) {\r\n return c - Easings.BounceEaseOut(d - t, 0, c, d) + b;\r\n },\r\n /**\r\n * bounce ease in out\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n BounceEaseInOut: function (t, b, c, d) {\r\n if (t < d / 2) {\r\n return Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\r\n }\r\n else {\r\n return Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\r\n }\r\n },\r\n /**\r\n * ease in\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n EaseIn: function (t, b, c, d) {\r\n return c * (t /= d) * t + b;\r\n },\r\n /**\r\n * ease out\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n EaseOut: function (t, b, c, d) {\r\n return -c * (t /= d) * (t - 2) + b;\r\n },\r\n /**\r\n * ease in out\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n EaseInOut: function (t, b, c, d) {\r\n if ((t /= d / 2) < 1) {\r\n return (c / 2) * t * t + b;\r\n }\r\n return (-c / 2) * (--t * (t - 2) - 1) + b;\r\n },\r\n /**\r\n * strong ease in\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n StrongEaseIn: function (t, b, c, d) {\r\n return c * (t /= d) * t * t * t * t + b;\r\n },\r\n /**\r\n * strong ease out\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n StrongEaseOut: function (t, b, c, d) {\r\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\r\n },\r\n /**\r\n * strong ease in out\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n StrongEaseInOut: function (t, b, c, d) {\r\n if ((t /= d / 2) < 1) {\r\n return (c / 2) * t * t * t * t * t + b;\r\n }\r\n return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\r\n },\r\n /**\r\n * linear\r\n * @function\r\n * @memberof Konva.Easings\r\n */\r\n Linear: function (t, b, c, d) {\r\n return (c * t) / d + b;\r\n },\r\n };\n\n // what is core parts of Konva?\r\n var Konva$1 = Util._assign(Konva, {\r\n Collection: Collection,\r\n Util: Util,\r\n Transform: Transform,\r\n Node: Node,\r\n ids: ids,\r\n names: names,\r\n Container: Container,\r\n Stage: Stage,\r\n stages: stages,\r\n Layer: Layer,\r\n FastLayer: FastLayer,\r\n Group: Group,\r\n DD: DD,\r\n Shape: Shape,\r\n shapes: shapes,\r\n Animation: Animation,\r\n Tween: Tween,\r\n Easings: Easings,\r\n Context: Context,\r\n Canvas: Canvas\r\n });\n\n /**\r\n * Arc constructor\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {Number} config.angle in degrees\r\n * @param {Number} config.innerRadius\r\n * @param {Number} config.outerRadius\r\n * @param {Boolean} [config.clockwise]\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * // draw a Arc that's pointing downwards\r\n * var arc = new Konva.Arc({\r\n * innerRadius: 40,\r\n * outerRadius: 80,\r\n * fill: 'red',\r\n * stroke: 'black'\r\n * strokeWidth: 5,\r\n * angle: 60,\r\n * rotationDeg: -120\r\n * });\r\n */\r\n var Arc = /** @class */ (function (_super) {\r\n __extends(Arc, _super);\r\n function Arc() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Arc.prototype._sceneFunc = function (context) {\r\n var angle = Konva.getAngle(this.angle()), clockwise = this.clockwise();\r\n context.beginPath();\r\n context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\r\n context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n };\r\n Arc.prototype.getWidth = function () {\r\n return this.outerRadius() * 2;\r\n };\r\n Arc.prototype.getHeight = function () {\r\n return this.outerRadius() * 2;\r\n };\r\n Arc.prototype.setWidth = function (width) {\r\n this.outerRadius(width / 2);\r\n };\r\n Arc.prototype.setHeight = function (height) {\r\n this.outerRadius(height / 2);\r\n };\r\n return Arc;\r\n }(Shape));\r\n Arc.prototype._centroid = true;\r\n Arc.prototype.className = 'Arc';\r\n Arc.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\r\n _registerNode(Arc);\r\n // add getters setters\r\n Factory.addGetterSetter(Arc, 'innerRadius', 0, getNumberValidator());\r\n /**\r\n * get/set innerRadius\r\n * @name Konva.Arc#innerRadius\r\n * @method\r\n * @param {Number} innerRadius\r\n * @returns {Number}\r\n * @example\r\n * // get inner radius\r\n * var innerRadius = arc.innerRadius();\r\n *\r\n * // set inner radius\r\n * arc.innerRadius(20);\r\n */\r\n Factory.addGetterSetter(Arc, 'outerRadius', 0, getNumberValidator());\r\n /**\r\n * get/set outerRadius\r\n * @name Konva.Arc#outerRadius\r\n * @method\r\n * @param {Number} outerRadius\r\n * @returns {Number}\r\n * @example\r\n * // get outer radius\r\n * var outerRadius = arc.outerRadius();\r\n *\r\n * // set outer radius\r\n * arc.outerRadius(20);\r\n */\r\n Factory.addGetterSetter(Arc, 'angle', 0, getNumberValidator());\r\n /**\r\n * get/set angle in degrees\r\n * @name Konva.Arc#angle\r\n * @method\r\n * @param {Number} angle\r\n * @returns {Number}\r\n * @example\r\n * // get angle\r\n * var angle = arc.angle();\r\n *\r\n * // set angle\r\n * arc.angle(20);\r\n */\r\n Factory.addGetterSetter(Arc, 'clockwise', false, getBooleanValidator());\r\n /**\r\n * get/set clockwise flag\r\n * @name Konva.Arc#clockwise\r\n * @method\r\n * @param {Boolean} clockwise\r\n * @returns {Boolean}\r\n * @example\r\n * // get clockwise flag\r\n * var clockwise = arc.clockwise();\r\n *\r\n * // draw arc counter-clockwise\r\n * arc.clockwise(false);\r\n *\r\n * // draw arc clockwise\r\n * arc.clockwise(true);\r\n */\r\n Collection.mapMethods(Arc);\n\n /**\r\n * Line constructor.  Lines are defined by an array of points and\r\n * a tension\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {Array} config.points Flat array of points coordinates. You should define them as [x1, y1, x2, y2, x3, y3].\r\n * @param {Number} [config.tension] Higher values will result in a more curvy line. A value of 0 will result in no interpolation.\r\n * The default is 0\r\n * @param {Boolean} [config.closed] defines whether or not the line shape is closed, creating a polygon or blob\r\n * @param {Boolean} [config.bezier] if no tension is provided but bezier=true, we draw the line as a bezier using the passed points\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var line = new Konva.Line({\r\n * x: 100,\r\n * y: 50,\r\n * points: [73, 70, 340, 23, 450, 60, 500, 20],\r\n * stroke: 'red',\r\n * tension: 1\r\n * });\r\n */\r\n var Line = /** @class */ (function (_super) {\r\n __extends(Line, _super);\r\n function Line(config) {\r\n var _this = _super.call(this, config) || this;\r\n _this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\r\n this._clearCache('tensionPoints');\r\n });\r\n return _this;\r\n }\r\n Line.prototype._sceneFunc = function (context) {\r\n var points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier(), tp, len, n;\r\n if (!length) {\r\n return;\r\n }\r\n context.beginPath();\r\n context.moveTo(points[0], points[1]);\r\n // tension\r\n if (tension !== 0 && length > 4) {\r\n tp = this.getTensionPoints();\r\n len = tp.length;\r\n n = closed ? 0 : 4;\r\n if (!closed) {\r\n context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\r\n }\r\n while (n < len - 2) {\r\n context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\r\n }\r\n if (!closed) {\r\n context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\r\n }\r\n }\r\n else if (bezier) {\r\n // no tension but bezier\r\n n = 2;\r\n while (n < length) {\r\n context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\r\n }\r\n }\r\n else {\r\n // no tension\r\n for (n = 2; n < length; n += 2) {\r\n context.lineTo(points[n], points[n + 1]);\r\n }\r\n }\r\n // closed e.g. polygons and blobs\r\n if (closed) {\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n }\r\n else {\r\n // open e.g. lines and splines\r\n context.strokeShape(this);\r\n }\r\n };\r\n Line.prototype.getTensionPoints = function () {\r\n return this._getCache('tensionPoints', this._getTensionPoints);\r\n };\r\n Line.prototype._getTensionPoints = function () {\r\n if (this.closed()) {\r\n return this._getTensionPointsClosed();\r\n }\r\n else {\r\n return Util._expandPoints(this.points(), this.tension());\r\n }\r\n };\r\n Line.prototype._getTensionPointsClosed = function () {\r\n var p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = Util._getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = Util._getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = Util._expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\r\n .concat(middle)\r\n .concat([\r\n lastControlPoints[0],\r\n lastControlPoints[1],\r\n p[len - 2],\r\n p[len - 1],\r\n lastControlPoints[2],\r\n lastControlPoints[3],\r\n firstControlPoints[0],\r\n firstControlPoints[1],\r\n p[0],\r\n p[1]\r\n ]);\r\n return tp;\r\n };\r\n Line.prototype.getWidth = function () {\r\n return this.getSelfRect().width;\r\n };\r\n Line.prototype.getHeight = function () {\r\n return this.getSelfRect().height;\r\n };\r\n // overload size detection\r\n Line.prototype.getSelfRect = function () {\r\n var points = this.points();\r\n if (points.length < 4) {\r\n return {\r\n x: points[0] || 0,\r\n y: points[1] || 0,\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n if (this.tension() !== 0) {\r\n points = __spreadArrays([\r\n points[0],\r\n points[1]\r\n ], this._getTensionPoints(), [\r\n points[points.length - 2],\r\n points[points.length - 1]\r\n ]);\r\n }\r\n else {\r\n points = this.points();\r\n }\r\n var minX = points[0];\r\n var maxX = points[0];\r\n var minY = points[1];\r\n var maxY = points[1];\r\n var x, y;\r\n for (var i = 0; i < points.length / 2; i++) {\r\n x = points[i * 2];\r\n y = points[i * 2 + 1];\r\n minX = Math.min(minX, x);\r\n maxX = Math.max(maxX, x);\r\n minY = Math.min(minY, y);\r\n maxY = Math.max(maxY, y);\r\n }\r\n return {\r\n x: minX,\r\n y: minY,\r\n width: maxX - minX,\r\n height: maxY - minY\r\n };\r\n };\r\n return Line;\r\n }(Shape));\r\n Line.prototype.className = 'Line';\r\n Line.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\r\n _registerNode(Line);\r\n // add getters setters\r\n Factory.addGetterSetter(Line, 'closed', false);\r\n /**\r\n * get/set closed flag. The default is false\r\n * @name Konva.Line#closed\r\n * @method\r\n * @param {Boolean} closed\r\n * @returns {Boolean}\r\n * @example\r\n * // get closed flag\r\n * var closed = line.closed();\r\n *\r\n * // close the shape\r\n * line.closed(true);\r\n *\r\n * // open the shape\r\n * line.closed(false);\r\n */\r\n Factory.addGetterSetter(Line, 'bezier', false);\r\n /**\r\n * get/set bezier flag. The default is false\r\n * @name Konva.Line#bezier\r\n * @method\r\n * @param {Boolean} bezier\r\n * @returns {Boolean}\r\n * @example\r\n * // get whether the line is a bezier\r\n * var isBezier = line.bezier();\r\n *\r\n * // set whether the line is a bezier\r\n * line.bezier(true);\r\n */\r\n Factory.addGetterSetter(Line, 'tension', 0, getNumberValidator());\r\n /**\r\n * get/set tension\r\n * @name Konva.Line#tension\r\n * @method\r\n * @param {Number} tension Higher values will result in a more curvy line. A value of 0 will result in no interpolation. The default is 0\r\n * @returns {Number}\r\n * @example\r\n * // get tension\r\n * var tension = line.tension();\r\n *\r\n * // set tension\r\n * line.tension(3);\r\n */\r\n Factory.addGetterSetter(Line, 'points', [], getNumberArrayValidator());\r\n /**\r\n * get/set points array. Points is a flat array [x1, y1, x2, y2]. It is flat for performance reasons.\r\n * @name Konva.Line#points\r\n * @method\r\n * @param {Array} points\r\n * @returns {Array}\r\n * @example\r\n * // get points\r\n * var points = line.points();\r\n *\r\n * // set points\r\n * line.points([10, 20, 30, 40, 50, 60]);\r\n *\r\n * // push a new point\r\n * line.points(line.points().concat([70, 80]));\r\n */\r\n Collection.mapMethods(Line);\n\n /**\r\n * Arrow constructor\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Line\r\n * @param {Object} config\r\n * @param {Array} config.points Flat array of points coordinates. You should define them as [x1, y1, x2, y2, x3, y3].\r\n * @param {Number} [config.tension] Higher values will result in a more curvy line. A value of 0 will result in no interpolation.\r\n * The default is 0\r\n * @param {Number} config.pointerLength Arrow pointer length. Default value is 10.\r\n * @param {Number} config.pointerWidth Arrow pointer width. Default value is 10.\r\n * @param {Boolean} config.pointerAtBeginning Do we need to draw pointer on both sides?. Default false.\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var line = new Konva.Line({\r\n * points: [73, 70, 340, 23, 450, 60, 500, 20],\r\n * stroke: 'red',\r\n * tension: 1,\r\n * pointerLength : 10,\r\n * pointerWidth : 12\r\n * });\r\n */\r\n var Arrow = /** @class */ (function (_super) {\r\n __extends(Arrow, _super);\r\n function Arrow() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Arrow.prototype._sceneFunc = function (ctx) {\r\n _super.prototype._sceneFunc.call(this, ctx);\r\n var PI2 = Math.PI * 2;\r\n var points = this.points();\r\n var tp = points;\r\n var fromTension = this.tension() !== 0 && points.length > 4;\r\n if (fromTension) {\r\n tp = this.getTensionPoints();\r\n }\r\n var n = points.length;\r\n var dx, dy;\r\n if (fromTension) {\r\n dx = points[n - 2] - (tp[tp.length - 2] + tp[tp.length - 4]) / 2;\r\n dy = points[n - 1] - (tp[tp.length - 1] + tp[tp.length - 3]) / 2;\r\n }\r\n else {\r\n dx = points[n - 2] - points[n - 4];\r\n dy = points[n - 1] - points[n - 3];\r\n }\r\n var radians = (Math.atan2(dy, dx) + PI2) % PI2;\r\n var length = this.pointerLength();\r\n var width = this.pointerWidth();\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.translate(points[n - 2], points[n - 1]);\r\n ctx.rotate(radians);\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(-length, width / 2);\r\n ctx.lineTo(-length, -width / 2);\r\n ctx.closePath();\r\n ctx.restore();\r\n if (this.pointerAtBeginning()) {\r\n ctx.save();\r\n ctx.translate(points[0], points[1]);\r\n if (fromTension) {\r\n dx = (tp[0] + tp[2]) / 2 - points[0];\r\n dy = (tp[1] + tp[3]) / 2 - points[1];\r\n }\r\n else {\r\n dx = points[2] - points[0];\r\n dy = points[3] - points[1];\r\n }\r\n ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(-length, width / 2);\r\n ctx.lineTo(-length, -width / 2);\r\n ctx.closePath();\r\n ctx.restore();\r\n }\r\n // here is a tricky part\r\n // we need to disable dash for arrow pointers\r\n var isDashEnabled = this.dashEnabled();\r\n if (isDashEnabled) {\r\n // manually disable dash for head\r\n // it is better not to use setter here,\r\n // because it will trigger attr change event\r\n this.attrs.dashEnabled = false;\r\n ctx.setLineDash([]);\r\n }\r\n ctx.fillStrokeShape(this);\r\n // restore old value\r\n if (isDashEnabled) {\r\n this.attrs.dashEnabled = true;\r\n }\r\n };\r\n Arrow.prototype.getSelfRect = function () {\r\n var lineRect = _super.prototype.getSelfRect.call(this);\r\n var offset = this.pointerWidth() / 2;\r\n return {\r\n x: lineRect.x - offset,\r\n y: lineRect.y - offset,\r\n width: lineRect.width + offset * 2,\r\n height: lineRect.height + offset * 2\r\n };\r\n };\r\n return Arrow;\r\n }(Line));\r\n Arrow.prototype.className = 'Arrow';\r\n _registerNode(Arrow);\r\n /**\r\n * get/set pointerLength\r\n * @name Konva.Arrow#pointerLength\r\n * @method\r\n * @param {Number} Length of pointer of arrow. The default is 10.\r\n * @returns {Number}\r\n * @example\r\n * // get length\r\n * var pointerLength = line.pointerLength();\r\n *\r\n * // set length\r\n * line.pointerLength(15);\r\n */\r\n Factory.addGetterSetter(Arrow, 'pointerLength', 10, getNumberValidator());\r\n /**\r\n * get/set pointerWidth\r\n * @name Konva.Arrow#pointerWidth\r\n * @method\r\n * @param {Number} Width of pointer of arrow.\r\n * The default is 10.\r\n * @returns {Number}\r\n * @example\r\n * // get width\r\n * var pointerWidth = line.pointerWidth();\r\n *\r\n * // set width\r\n * line.pointerWidth(15);\r\n */\r\n Factory.addGetterSetter(Arrow, 'pointerWidth', 10, getNumberValidator());\r\n /**\r\n * get/set pointerAtBeginning\r\n * @name Konva.Arrow#pointerAtBeginning\r\n * @method\r\n * @param {Number} Should pointer displayed at beginning of arrow. The default is false.\r\n * @returns {Boolean}\r\n * @example\r\n * // get value\r\n * var pointerAtBeginning = line.pointerAtBeginning();\r\n *\r\n * // set value\r\n * line.pointerAtBeginning(true);\r\n */\r\n Factory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\r\n Collection.mapMethods(Arrow);\n\n /**\r\n * Circle constructor\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {Number} config.radius\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * // create circle\r\n * var circle = new Konva.Circle({\r\n * radius: 40,\r\n * fill: 'red',\r\n * stroke: 'black',\r\n * strokeWidth: 5\r\n * });\r\n */\r\n var Circle = /** @class */ (function (_super) {\r\n __extends(Circle, _super);\r\n function Circle() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Circle.prototype._sceneFunc = function (context) {\r\n context.beginPath();\r\n context.arc(0, 0, this.radius(), 0, Math.PI * 2, false);\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n };\r\n Circle.prototype.getWidth = function () {\r\n return this.radius() * 2;\r\n };\r\n Circle.prototype.getHeight = function () {\r\n return this.radius() * 2;\r\n };\r\n Circle.prototype.setWidth = function (width) {\r\n if (this.radius() !== width / 2) {\r\n this.radius(width / 2);\r\n }\r\n };\r\n Circle.prototype.setHeight = function (height) {\r\n if (this.radius() !== height / 2) {\r\n this.radius(height / 2);\r\n }\r\n };\r\n return Circle;\r\n }(Shape));\r\n Circle.prototype._centroid = true;\r\n Circle.prototype.className = 'Circle';\r\n Circle.prototype._attrsAffectingSize = ['radius'];\r\n _registerNode(Circle);\r\n /**\r\n * get/set radius\r\n * @name Konva.Arrow#radius\r\n * @method\r\n * @param {Number} radius\r\n * @returns {Number}\r\n * @example\r\n * // get radius\r\n * var radius = circle.radius();\r\n *\r\n * // set radius\r\n * circle.radius(10);\r\n */\r\n Factory.addGetterSetter(Circle, 'radius', 0, getNumberValidator());\r\n Collection.mapMethods(Circle);\n\n /**\r\n * Ellipse constructor\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {Object} config.radius defines x and y radius\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var ellipse = new Konva.Ellipse({\r\n * radius : {\r\n * x : 50,\r\n * y : 50\r\n * },\r\n * fill: 'red'\r\n * });\r\n */\r\n var Ellipse = /** @class */ (function (_super) {\r\n __extends(Ellipse, _super);\r\n function Ellipse() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Ellipse.prototype._sceneFunc = function (context) {\r\n var rx = this.radiusX(), ry = this.radiusY();\r\n context.beginPath();\r\n context.save();\r\n if (rx !== ry) {\r\n context.scale(1, ry / rx);\r\n }\r\n context.arc(0, 0, rx, 0, Math.PI * 2, false);\r\n context.restore();\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n };\r\n Ellipse.prototype.getWidth = function () {\r\n return this.radiusX() * 2;\r\n };\r\n Ellipse.prototype.getHeight = function () {\r\n return this.radiusY() * 2;\r\n };\r\n Ellipse.prototype.setWidth = function (width) {\r\n this.radiusX(width / 2);\r\n };\r\n Ellipse.prototype.setHeight = function (height) {\r\n this.radiusY(height / 2);\r\n };\r\n return Ellipse;\r\n }(Shape));\r\n Ellipse.prototype.className = 'Ellipse';\r\n Ellipse.prototype._centroid = true;\r\n Ellipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\r\n _registerNode(Ellipse);\r\n // add getters setters\r\n Factory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\r\n /**\r\n * get/set radius\r\n * @name Konva.Ellipse#radius\r\n * @method\r\n * @param {Object} radius\r\n * @param {Number} radius.x\r\n * @param {Number} radius.y\r\n * @returns {Object}\r\n * @example\r\n * // get radius\r\n * var radius = ellipse.radius();\r\n *\r\n * // set radius\r\n * ellipse.radius({\r\n * x: 200,\r\n * y: 100\r\n * });\r\n */\r\n Factory.addGetterSetter(Ellipse, 'radiusX', 0, getNumberValidator());\r\n /**\r\n * get/set radius x\r\n * @name Konva.Ellipse#radiusX\r\n * @method\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get radius x\r\n * var radiusX = ellipse.radiusX();\r\n *\r\n * // set radius x\r\n * ellipse.radiusX(200);\r\n */\r\n Factory.addGetterSetter(Ellipse, 'radiusY', 0, getNumberValidator());\r\n /**\r\n * get/set radius y\r\n * @name Konva.Ellipse#radiusY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get radius y\r\n * var radiusY = ellipse.radiusY();\r\n *\r\n * // set radius y\r\n * ellipse.radiusY(200);\r\n */\r\n Collection.mapMethods(Ellipse);\n\n /**\r\n * Image constructor\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {Image} config.image\r\n * @param {Object} [config.crop]\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var imageObj = new Image();\r\n * imageObj.onload = function() {\r\n * var image = new Konva.Image({\r\n * x: 200,\r\n * y: 50,\r\n * image: imageObj,\r\n * width: 100,\r\n * height: 100\r\n * });\r\n * };\r\n * imageObj.src = '/path/to/image.jpg'\r\n */\r\n var Image = /** @class */ (function (_super) {\r\n __extends(Image, _super);\r\n function Image() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Image.prototype._useBufferCanvas = function () {\r\n return _super.prototype._useBufferCanvas.call(this, true);\r\n };\r\n Image.prototype._sceneFunc = function (context) {\r\n var width = this.getWidth(), height = this.getHeight(), image = this.attrs.image, cropWidth, cropHeight, params;\r\n if (image) {\r\n cropWidth = this.attrs.cropWidth;\r\n cropHeight = this.attrs.cropHeight;\r\n if (cropWidth && cropHeight) {\r\n params = [\r\n image,\r\n this.cropX(),\r\n this.cropY(),\r\n cropWidth,\r\n cropHeight,\r\n 0,\r\n 0,\r\n width,\r\n height,\r\n ];\r\n }\r\n else {\r\n params = [image, 0, 0, width, height];\r\n }\r\n }\r\n if (this.hasFill() || this.hasStroke()) {\r\n context.beginPath();\r\n context.rect(0, 0, width, height);\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n }\r\n if (image) {\r\n context.drawImage.apply(context, params);\r\n }\r\n };\r\n Image.prototype._hitFunc = function (context) {\r\n var width = this.width(), height = this.height();\r\n context.beginPath();\r\n context.rect(0, 0, width, height);\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n };\r\n Image.prototype.getWidth = function () {\r\n var _a, _b;\r\n return (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (((_b = this.image()) === null || _b === void 0 ? void 0 : _b.width) || 0);\r\n };\r\n Image.prototype.getHeight = function () {\r\n var _a, _b;\r\n return (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (((_b = this.image()) === null || _b === void 0 ? void 0 : _b.height) || 0);\r\n };\r\n /**\r\n * load image from given url and create `Konva.Image` instance\r\n * @method\r\n * @memberof Konva.Image\r\n * @param {String} url image source\r\n * @param {Function} callback with Konva.Image instance as first argument\r\n * @example\r\n * Konva.Image.fromURL(imageURL, function(image){\r\n * // image is Konva.Image instance\r\n * layer.add(image);\r\n * layer.draw();\r\n * });\r\n */\r\n Image.fromURL = function (url, callback) {\r\n var img = Util.createImageElement();\r\n img.onload = function () {\r\n var image = new Image({\r\n image: img,\r\n });\r\n callback(image);\r\n };\r\n img.crossOrigin = 'Anonymous';\r\n img.src = url;\r\n };\r\n return Image;\r\n }(Shape));\r\n Image.prototype.className = 'Image';\r\n _registerNode(Image);\r\n /**\r\n * get/set image source. It can be image, canvas or video element\r\n * @name Konva.Image#image\r\n * @method\r\n * @param {Object} image source\r\n * @returns {Object}\r\n * @example\r\n * // get value\r\n * var image = shape.image();\r\n *\r\n * // set value\r\n * shape.image(img);\r\n */\r\n Factory.addGetterSetter(Image, 'image');\r\n Factory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\r\n /**\r\n * get/set crop\r\n * @method\r\n * @name Konva.Image#crop\r\n * @param {Object} crop\r\n * @param {Number} crop.x\r\n * @param {Number} crop.y\r\n * @param {Number} crop.width\r\n * @param {Number} crop.height\r\n * @returns {Object}\r\n * @example\r\n * // get crop\r\n * var crop = image.crop();\r\n *\r\n * // set crop\r\n * image.crop({\r\n * x: 20,\r\n * y: 20,\r\n * width: 20,\r\n * height: 20\r\n * });\r\n */\r\n Factory.addGetterSetter(Image, 'cropX', 0, getNumberValidator());\r\n /**\r\n * get/set crop x\r\n * @method\r\n * @name Konva.Image#cropX\r\n * @param {Number} x\r\n * @returns {Number}\r\n * @example\r\n * // get crop x\r\n * var cropX = image.cropX();\r\n *\r\n * // set crop x\r\n * image.cropX(20);\r\n */\r\n Factory.addGetterSetter(Image, 'cropY', 0, getNumberValidator());\r\n /**\r\n * get/set crop y\r\n * @name Konva.Image#cropY\r\n * @method\r\n * @param {Number} y\r\n * @returns {Number}\r\n * @example\r\n * // get crop y\r\n * var cropY = image.cropY();\r\n *\r\n * // set crop y\r\n * image.cropY(20);\r\n */\r\n Factory.addGetterSetter(Image, 'cropWidth', 0, getNumberValidator());\r\n /**\r\n * get/set crop width\r\n * @name Konva.Image#cropWidth\r\n * @method\r\n * @param {Number} width\r\n * @returns {Number}\r\n * @example\r\n * // get crop width\r\n * var cropWidth = image.cropWidth();\r\n *\r\n * // set crop width\r\n * image.cropWidth(20);\r\n */\r\n Factory.addGetterSetter(Image, 'cropHeight', 0, getNumberValidator());\r\n /**\r\n * get/set crop height\r\n * @name Konva.Image#cropHeight\r\n * @method\r\n * @param {Number} height\r\n * @returns {Number}\r\n * @example\r\n * // get crop height\r\n * var cropHeight = image.cropHeight();\r\n *\r\n * // set crop height\r\n * image.cropHeight(20);\r\n */\r\n Collection.mapMethods(Image);\n\n // constants\r\n var ATTR_CHANGE_LIST = [\r\n 'fontFamily',\r\n 'fontSize',\r\n 'fontStyle',\r\n 'padding',\r\n 'lineHeight',\r\n 'text',\r\n 'width'\r\n ], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', \r\n // cached variables\r\n attrChangeListLen = ATTR_CHANGE_LIST.length;\r\n /**\r\n * Label constructor.  Labels are groups that contain a Text and Tag shape\r\n * @constructor\r\n * @memberof Konva\r\n * @param {Object} config\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * // create label\r\n * var label = new Konva.Label({\r\n * x: 100,\r\n * y: 100,\r\n * draggable: true\r\n * });\r\n *\r\n * // add a tag to the label\r\n * label.add(new Konva.Tag({\r\n * fill: '#bbb',\r\n * stroke: '#333',\r\n * shadowColor: 'black',\r\n * shadowBlur: 10,\r\n * shadowOffset: [10, 10],\r\n * shadowOpacity: 0.2,\r\n * lineJoin: 'round',\r\n * pointerDirection: 'up',\r\n * pointerWidth: 20,\r\n * pointerHeight: 20,\r\n * cornerRadius: 5\r\n * }));\r\n *\r\n * // add text to the label\r\n * label.add(new Konva.Text({\r\n * text: 'Hello World!',\r\n * fontSize: 50,\r\n * lineHeight: 1.2,\r\n * padding: 10,\r\n * fill: 'green'\r\n * }));\r\n */\r\n var Label = /** @class */ (function (_super) {\r\n __extends(Label, _super);\r\n function Label(config) {\r\n var _this = _super.call(this, config) || this;\r\n _this.on('add.konva', function (evt) {\r\n this._addListeners(evt.child);\r\n this._sync();\r\n });\r\n return _this;\r\n }\r\n /**\r\n * get Text shape for the label. You need to access the Text shape in order to update\r\n * the text properties\r\n * @name Konva.Label#getText\r\n * @method\r\n * @example\r\n * label.getText().fill('red')\r\n */\r\n Label.prototype.getText = function () {\r\n return this.find('Text')[0];\r\n };\r\n /**\r\n * get Tag shape for the label. You need to access the Tag shape in order to update\r\n * the pointer properties and the corner radius\r\n * @name Konva.Label#getTag\r\n * @method\r\n */\r\n Label.prototype.getTag = function () {\r\n return this.find('Tag')[0];\r\n };\r\n Label.prototype._addListeners = function (text) {\r\n var that = this, n;\r\n var func = function () {\r\n that._sync();\r\n };\r\n // update text data for certain attr changes\r\n for (n = 0; n < attrChangeListLen; n++) {\r\n text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\r\n }\r\n };\r\n Label.prototype.getWidth = function () {\r\n return this.getText().width();\r\n };\r\n Label.prototype.getHeight = function () {\r\n return this.getText().height();\r\n };\r\n Label.prototype._sync = function () {\r\n var text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\r\n if (text && tag) {\r\n width = text.width();\r\n height = text.height();\r\n pointerDirection = tag.pointerDirection();\r\n pointerWidth = tag.pointerWidth();\r\n pointerHeight = tag.pointerHeight();\r\n x = 0;\r\n y = 0;\r\n switch (pointerDirection) {\r\n case UP:\r\n x = width / 2;\r\n y = -1 * pointerHeight;\r\n break;\r\n case RIGHT:\r\n x = width + pointerWidth;\r\n y = height / 2;\r\n break;\r\n case DOWN:\r\n x = width / 2;\r\n y = height + pointerHeight;\r\n break;\r\n case LEFT:\r\n x = -1 * pointerWidth;\r\n y = height / 2;\r\n break;\r\n }\r\n tag.setAttrs({\r\n x: -1 * x,\r\n y: -1 * y,\r\n width: width,\r\n height: height\r\n });\r\n text.setAttrs({\r\n x: -1 * x,\r\n y: -1 * y\r\n });\r\n }\r\n };\r\n return Label;\r\n }(Group));\r\n Label.prototype.className = 'Label';\r\n _registerNode(Label);\r\n Collection.mapMethods(Label);\r\n /**\r\n * Tag constructor.  A Tag can be configured\r\n * to have a pointer element that points up, right, down, or left\r\n * @constructor\r\n * @memberof Konva\r\n * @param {Object} config\r\n * @param {String} [config.pointerDirection] can be up, right, down, left, or none; the default\r\n * is none. When a pointer is present, the positioning of the label is relative to the tip of the pointer.\r\n * @param {Number} [config.pointerWidth]\r\n * @param {Number} [config.pointerHeight]\r\n * @param {Number} [config.cornerRadius]\r\n */\r\n var Tag = /** @class */ (function (_super) {\r\n __extends(Tag, _super);\r\n function Tag() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Tag.prototype._sceneFunc = function (context) {\r\n var width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = Math.min(this.cornerRadius(), width / 2, height / 2);\r\n context.beginPath();\r\n if (!cornerRadius) {\r\n context.moveTo(0, 0);\r\n }\r\n else {\r\n context.moveTo(cornerRadius, 0);\r\n }\r\n if (pointerDirection === UP) {\r\n context.lineTo((width - pointerWidth) / 2, 0);\r\n context.lineTo(width / 2, -1 * pointerHeight);\r\n context.lineTo((width + pointerWidth) / 2, 0);\r\n }\r\n if (!cornerRadius) {\r\n context.lineTo(width, 0);\r\n }\r\n else {\r\n context.lineTo(width - cornerRadius, 0);\r\n context.arc(width - cornerRadius, cornerRadius, cornerRadius, (Math.PI * 3) / 2, 0, false);\r\n }\r\n if (pointerDirection === RIGHT) {\r\n context.lineTo(width, (height - pointerHeight) / 2);\r\n context.lineTo(width + pointerWidth, height / 2);\r\n context.lineTo(width, (height + pointerHeight) / 2);\r\n }\r\n if (!cornerRadius) {\r\n context.lineTo(width, height);\r\n }\r\n else {\r\n context.lineTo(width, height - cornerRadius);\r\n context.arc(width - cornerRadius, height - cornerRadius, cornerRadius, 0, Math.PI / 2, false);\r\n }\r\n if (pointerDirection === DOWN) {\r\n context.lineTo((width + pointerWidth) / 2, height);\r\n context.lineTo(width / 2, height + pointerHeight);\r\n context.lineTo((width - pointerWidth) / 2, height);\r\n }\r\n if (!cornerRadius) {\r\n context.lineTo(0, height);\r\n }\r\n else {\r\n context.lineTo(cornerRadius, height);\r\n context.arc(cornerRadius, height - cornerRadius, cornerRadius, Math.PI / 2, Math.PI, false);\r\n }\r\n if (pointerDirection === LEFT) {\r\n context.lineTo(0, (height + pointerHeight) / 2);\r\n context.lineTo(-1 * pointerWidth, height / 2);\r\n context.lineTo(0, (height - pointerHeight) / 2);\r\n }\r\n if (cornerRadius) {\r\n context.lineTo(0, cornerRadius);\r\n context.arc(cornerRadius, cornerRadius, cornerRadius, Math.PI, (Math.PI * 3) / 2, false);\r\n }\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n };\r\n Tag.prototype.getSelfRect = function () {\r\n var x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\r\n if (direction === UP) {\r\n y -= pointerHeight;\r\n height += pointerHeight;\r\n }\r\n else if (direction === DOWN) {\r\n height += pointerHeight;\r\n }\r\n else if (direction === LEFT) {\r\n // ARGH!!! I have no idea why should I used magic 1.5!!!!!!!!!\r\n x -= pointerWidth * 1.5;\r\n width += pointerWidth;\r\n }\r\n else if (direction === RIGHT) {\r\n width += pointerWidth * 1.5;\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n };\r\n };\r\n return Tag;\r\n }(Shape));\r\n Tag.prototype.className = 'Tag';\r\n _registerNode(Tag);\r\n /**\r\n * get/set pointer direction\r\n * @name Konva.Tag#pointerDirection\r\n * @method\r\n * @param {String} pointerDirection can be up, right, down, left, or none. The default is none.\r\n * @returns {String}\r\n * @example\r\n * tag.pointerDirection('right');\r\n */\r\n Factory.addGetterSetter(Tag, 'pointerDirection', NONE);\r\n /**\r\n * get/set pointer width\r\n * @name Konva.Tag#pointerWidth\r\n * @method\r\n * @param {Number} pointerWidth\r\n * @returns {Number}\r\n * @example\r\n * tag.pointerWidth(20);\r\n */\r\n Factory.addGetterSetter(Tag, 'pointerWidth', 0, getNumberValidator());\r\n /**\r\n * get/set pointer height\r\n * @method\r\n * @name Konva.Tag#pointerHeight\r\n * @param {Number} pointerHeight\r\n * @returns {Number}\r\n * @example\r\n * tag.pointerHeight(20);\r\n */\r\n Factory.addGetterSetter(Tag, 'pointerHeight', 0, getNumberValidator());\r\n /**\r\n * get/set cornerRadius\r\n * @name Konva.Tag#cornerRadius\r\n * @method\r\n * @param {Number} cornerRadius\r\n * @returns {Number}\r\n * @example\r\n * tag.cornerRadius(20);\r\n */\r\n Factory.addGetterSetter(Tag, 'cornerRadius', 0, getNumberValidator());\r\n Collection.mapMethods(Tag);\n\n /**\r\n * Path constructor.\r\n * @author Jason Follas\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {String} config.data SVG data string\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var path = new Konva.Path({\r\n * x: 240,\r\n * y: 40,\r\n * data: 'M12.582,9.551C3.251,16.237,0.921,29.021,7.08,38.564l-2.36,1.689l4.893,2.262l4.893,2.262l-0.568-5.36l-0.567-5.359l-2.365,1.694c-4.657-7.375-2.83-17.185,4.352-22.33c7.451-5.338,17.817-3.625,23.156,3.824c5.337,7.449,3.625,17.813-3.821,23.152l2.857,3.988c9.617-6.893,11.827-20.277,4.935-29.896C35.591,4.87,22.204,2.658,12.582,9.551z',\r\n * fill: 'green',\r\n * scaleX: 2,\r\n * scaleY: 2\r\n * });\r\n */\r\n var Path = /** @class */ (function (_super) {\r\n __extends(Path, _super);\r\n function Path(config) {\r\n var _this = _super.call(this, config) || this;\r\n _this.dataArray = [];\r\n _this.pathLength = 0;\r\n _this.dataArray = Path.parsePathData(_this.data());\r\n _this.pathLength = 0;\r\n for (var i = 0; i < _this.dataArray.length; ++i) {\r\n _this.pathLength += _this.dataArray[i].pathLength;\r\n }\r\n _this.on('dataChange.konva', function () {\r\n this.dataArray = Path.parsePathData(this.data());\r\n this.pathLength = 0;\r\n for (var i = 0; i < this.dataArray.length; ++i) {\r\n this.pathLength += this.dataArray[i].pathLength;\r\n }\r\n });\r\n return _this;\r\n }\r\n Path.prototype._sceneFunc = function (context) {\r\n var ca = this.dataArray;\r\n // context position\r\n context.beginPath();\r\n var isClosed = false;\r\n for (var n = 0; n < ca.length; n++) {\r\n var c = ca[n].command;\r\n var p = ca[n].points;\r\n switch (c) {\r\n case 'L':\r\n context.lineTo(p[0], p[1]);\r\n break;\r\n case 'M':\r\n context.moveTo(p[0], p[1]);\r\n break;\r\n case 'C':\r\n context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\r\n break;\r\n case 'Q':\r\n context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\r\n break;\r\n case 'A':\r\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\r\n var r = rx > ry ? rx : ry;\r\n var scaleX = rx > ry ? 1 : rx / ry;\r\n var scaleY = rx > ry ? ry / rx : 1;\r\n context.translate(cx, cy);\r\n context.rotate(psi);\r\n context.scale(scaleX, scaleY);\r\n context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\r\n context.scale(1 / scaleX, 1 / scaleY);\r\n context.rotate(-psi);\r\n context.translate(-cx, -cy);\r\n break;\r\n case 'z':\r\n isClosed = true;\r\n context.closePath();\r\n break;\r\n }\r\n }\r\n if (!isClosed && !this.hasFill()) {\r\n context.strokeShape(this);\r\n }\r\n else {\r\n context.fillStrokeShape(this);\r\n }\r\n };\r\n Path.prototype.getSelfRect = function () {\r\n var points = [];\r\n this.dataArray.forEach(function (data) {\r\n if (data.command === 'A') {\r\n // Approximates by breaking curve into line segments\r\n var start = data.points[4];\r\n // 4 = theta\r\n var dTheta = data.points[5];\r\n // 5 = dTheta\r\n var end = data.points[4] + dTheta;\r\n var inc = Math.PI / 180.0;\r\n // 1 degree resolution\r\n if (Math.abs(start - end) < inc) {\r\n inc = Math.abs(start - end);\r\n }\r\n if (dTheta < 0) {\r\n // clockwise\r\n for (var t = start - inc; t > end; t -= inc) {\r\n var point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\r\n points.push(point.x, point.y);\r\n }\r\n }\r\n else {\r\n // counter-clockwise\r\n for (var t = start + inc; t < end; t += inc) {\r\n var point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\r\n points.push(point.x, point.y);\r\n }\r\n }\r\n }\r\n else if (data.command === 'C') {\r\n // Approximates by breaking curve into 100 line segments\r\n for (var t = 0.0; t <= 1; t += 0.01) {\r\n var point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\r\n points.push(point.x, point.y);\r\n }\r\n }\r\n else {\r\n // TODO: how can we calculate bezier curves better?\r\n points = points.concat(data.points);\r\n }\r\n });\r\n var minX = points[0];\r\n var maxX = points[0];\r\n var minY = points[1];\r\n var maxY = points[1];\r\n var x, y;\r\n for (var i = 0; i < points.length / 2; i++) {\r\n x = points[i * 2];\r\n y = points[i * 2 + 1];\r\n // skip bad values\r\n if (!isNaN(x)) {\r\n minX = Math.min(minX, x);\r\n maxX = Math.max(maxX, x);\r\n }\r\n if (!isNaN(y)) {\r\n minY = Math.min(minY, y);\r\n maxY = Math.max(maxY, y);\r\n }\r\n }\r\n return {\r\n x: Math.round(minX),\r\n y: Math.round(minY),\r\n width: Math.round(maxX - minX),\r\n height: Math.round(maxY - minY)\r\n };\r\n };\r\n /**\r\n * Return length of the path.\r\n * @method\r\n * @name Konva.Path#getLength\r\n * @returns {Number} length\r\n * @example\r\n * var length = path.getLength();\r\n */\r\n Path.prototype.getLength = function () {\r\n return this.pathLength;\r\n };\r\n /**\r\n * Get point on path at specific length of the path\r\n * @method\r\n * @name Konva.Path#getPointAtLength\r\n * @param {Number} length length\r\n * @returns {Object} point {x,y} point\r\n * @example\r\n * var point = path.getPointAtLength(10);\r\n */\r\n Path.prototype.getPointAtLength = function (length) {\r\n var point, i = 0, ii = this.dataArray.length;\r\n if (!ii) {\r\n return null;\r\n }\r\n while (i < ii && length > this.dataArray[i].pathLength) {\r\n length -= this.dataArray[i].pathLength;\r\n ++i;\r\n }\r\n if (i === ii) {\r\n point = this.dataArray[i - 1].points.slice(-2);\r\n return {\r\n x: point[0],\r\n y: point[1]\r\n };\r\n }\r\n if (length < 0.01) {\r\n point = this.dataArray[i].points.slice(0, 2);\r\n return {\r\n x: point[0],\r\n y: point[1]\r\n };\r\n }\r\n var cp = this.dataArray[i];\r\n var p = cp.points;\r\n switch (cp.command) {\r\n case 'L':\r\n return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\r\n case 'C':\r\n return Path.getPointOnCubicBezier(length / cp.pathLength, cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\r\n case 'Q':\r\n return Path.getPointOnQuadraticBezier(length / cp.pathLength, cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\r\n case 'A':\r\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6];\r\n theta += (dTheta * length) / cp.pathLength;\r\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\r\n }\r\n return null;\r\n };\r\n Path.getLineLength = function (x1, y1, x2, y2) {\r\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\r\n };\r\n Path.getPointOnLine = function (dist, P1x, P1y, P2x, P2y, fromX, fromY) {\r\n if (fromX === undefined) {\r\n fromX = P1x;\r\n }\r\n if (fromY === undefined) {\r\n fromY = P1y;\r\n }\r\n var m = (P2y - P1y) / (P2x - P1x + 0.00000001);\r\n var run = Math.sqrt((dist * dist) / (1 + m * m));\r\n if (P2x < P1x) {\r\n run *= -1;\r\n }\r\n var rise = m * run;\r\n var pt;\r\n if (P2x === P1x) {\r\n // vertical line\r\n pt = {\r\n x: fromX,\r\n y: fromY + rise\r\n };\r\n }\r\n else if ((fromY - P1y) / (fromX - P1x + 0.00000001) === m) {\r\n pt = {\r\n x: fromX + run,\r\n y: fromY + rise\r\n };\r\n }\r\n else {\r\n var ix, iy;\r\n var len = this.getLineLength(P1x, P1y, P2x, P2y);\r\n if (len < 0.00000001) {\r\n return undefined;\r\n }\r\n var u = (fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y);\r\n u = u / (len * len);\r\n ix = P1x + u * (P2x - P1x);\r\n iy = P1y + u * (P2y - P1y);\r\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\r\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\r\n run = Math.sqrt((pRun * pRun) / (1 + m * m));\r\n if (P2x < P1x) {\r\n run *= -1;\r\n }\r\n rise = m * run;\r\n pt = {\r\n x: ix + run,\r\n y: iy + rise\r\n };\r\n }\r\n return pt;\r\n };\r\n Path.getPointOnCubicBezier = function (pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\r\n function CB1(t) {\r\n return t * t * t;\r\n }\r\n function CB2(t) {\r\n return 3 * t * t * (1 - t);\r\n }\r\n function CB3(t) {\r\n return 3 * t * (1 - t) * (1 - t);\r\n }\r\n function CB4(t) {\r\n return (1 - t) * (1 - t) * (1 - t);\r\n }\r\n var x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\r\n var y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\r\n return {\r\n x: x,\r\n y: y\r\n };\r\n };\r\n Path.getPointOnQuadraticBezier = function (pct, P1x, P1y, P2x, P2y, P3x, P3y) {\r\n function QB1(t) {\r\n return t * t;\r\n }\r\n function QB2(t) {\r\n return 2 * t * (1 - t);\r\n }\r\n function QB3(t) {\r\n return (1 - t) * (1 - t);\r\n }\r\n var x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\r\n var y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\r\n return {\r\n x: x,\r\n y: y\r\n };\r\n };\r\n Path.getPointOnEllipticalArc = function (cx, cy, rx, ry, theta, psi) {\r\n var cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\r\n var pt = {\r\n x: rx * Math.cos(theta),\r\n y: ry * Math.sin(theta)\r\n };\r\n return {\r\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\r\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\r\n };\r\n };\r\n /*\r\n * get parsed data array from the data\r\n * string. V, v, H, h, and l data are converted to\r\n * L data for the purpose of high performance Path\r\n * rendering\r\n */\r\n Path.parsePathData = function (data) {\r\n // Path Data Segment must begin with a moveTo\r\n //m (x y)+ Relative moveTo (subsequent points are treated as lineTo)\r\n //M (x y)+ Absolute moveTo (subsequent points are treated as lineTo)\r\n //l (x y)+ Relative lineTo\r\n //L (x y)+ Absolute LineTo\r\n //h (x)+ Relative horizontal lineTo\r\n //H (x)+ Absolute horizontal lineTo\r\n //v (y)+ Relative vertical lineTo\r\n //V (y)+ Absolute vertical lineTo\r\n //z (closepath)\r\n //Z (closepath)\r\n //c (x1 y1 x2 y2 x y)+ Relative Bezier curve\r\n //C (x1 y1 x2 y2 x y)+ Absolute Bezier curve\r\n //q (x1 y1 x y)+ Relative Quadratic Bezier\r\n //Q (x1 y1 x y)+ Absolute Quadratic Bezier\r\n //t (x y)+ Shorthand/Smooth Relative Quadratic Bezier\r\n //T (x y)+ Shorthand/Smooth Absolute Quadratic Bezier\r\n //s (x2 y2 x y)+ Shorthand/Smooth Relative Bezier curve\r\n //S (x2 y2 x y)+ Shorthand/Smooth Absolute Bezier curve\r\n //a (rx ry x-axis-rotation large-arc-flag sweep-flag x y)+ Relative Elliptical Arc\r\n //A (rx ry x-axis-rotation large-arc-flag sweep-flag x y)+ Absolute Elliptical Arc\r\n // return early if data is not defined\r\n if (!data) {\r\n return [];\r\n }\r\n // command string\r\n var cs = data;\r\n // command chars\r\n var cc = [\r\n 'm',\r\n 'M',\r\n 'l',\r\n 'L',\r\n 'v',\r\n 'V',\r\n 'h',\r\n 'H',\r\n 'z',\r\n 'Z',\r\n 'c',\r\n 'C',\r\n 'q',\r\n 'Q',\r\n 't',\r\n 'T',\r\n 's',\r\n 'S',\r\n 'a',\r\n 'A'\r\n ];\r\n // convert white spaces to commas\r\n cs = cs.replace(new RegExp(' ', 'g'), ',');\r\n // create pipes so that we can split the data\r\n for (var n = 0; n < cc.length; n++) {\r\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\r\n }\r\n // create array\r\n var arr = cs.split('|');\r\n var ca = [];\r\n var coords = [];\r\n // init context point\r\n var cpx = 0;\r\n var cpy = 0;\r\n var re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\r\n var match;\r\n for (n = 1; n < arr.length; n++) {\r\n var str = arr[n];\r\n var c = str.charAt(0);\r\n str = str.slice(1);\r\n coords.length = 0;\r\n while ((match = re.exec(str))) {\r\n coords.push(match[0]);\r\n }\r\n // while ((match = re.exec(str))) {\r\n // coords.push(match[0]);\r\n // }\r\n var p = [];\r\n for (var j = 0, jlen = coords.length; j < jlen; j++) {\r\n var parsed = parseFloat(coords[j]);\r\n if (!isNaN(parsed)) {\r\n p.push(parsed);\r\n }\r\n else {\r\n p.push(0);\r\n }\r\n }\r\n while (p.length > 0) {\r\n if (isNaN(p[0])) {\r\n // case for a trailing comma before next command\r\n break;\r\n }\r\n var cmd = null;\r\n var points = [];\r\n var startX = cpx, startY = cpy;\r\n // Move var from within the switch to up here (jshint)\r\n var prevCmd, ctlPtx, ctlPty; // Ss, Tt\r\n var rx, ry, psi, fa, fs, x1, y1; // Aa\r\n // convert l, H, h, V, and v to L\r\n switch (c) {\r\n // Note: Keep the lineTo's above the moveTo's in this switch\r\n case 'l':\r\n cpx += p.shift();\r\n cpy += p.shift();\r\n cmd = 'L';\r\n points.push(cpx, cpy);\r\n break;\r\n case 'L':\r\n cpx = p.shift();\r\n cpy = p.shift();\r\n points.push(cpx, cpy);\r\n break;\r\n // Note: lineTo handlers need to be above this point\r\n case 'm':\r\n var dx = p.shift();\r\n var dy = p.shift();\r\n cpx += dx;\r\n cpy += dy;\r\n cmd = 'M';\r\n // After closing the path move the current position\r\n // to the the first point of the path (if any).\r\n if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\r\n for (var idx = ca.length - 2; idx >= 0; idx--) {\r\n if (ca[idx].command === 'M') {\r\n cpx = ca[idx].points[0] + dx;\r\n cpy = ca[idx].points[1] + dy;\r\n break;\r\n }\r\n }\r\n }\r\n points.push(cpx, cpy);\r\n c = 'l';\r\n // subsequent points are treated as relative lineTo\r\n break;\r\n case 'M':\r\n cpx = p.shift();\r\n cpy = p.shift();\r\n cmd = 'M';\r\n points.push(cpx, cpy);\r\n c = 'L';\r\n // subsequent points are treated as absolute lineTo\r\n break;\r\n case 'h':\r\n cpx += p.shift();\r\n cmd = 'L';\r\n points.push(cpx, cpy);\r\n break;\r\n case 'H':\r\n cpx = p.shift();\r\n cmd = 'L';\r\n points.push(cpx, cpy);\r\n break;\r\n case 'v':\r\n cpy += p.shift();\r\n cmd = 'L';\r\n points.push(cpx, cpy);\r\n break;\r\n case 'V':\r\n cpy = p.shift();\r\n cmd = 'L';\r\n points.push(cpx, cpy);\r\n break;\r\n case 'C':\r\n points.push(p.shift(), p.shift(), p.shift(), p.shift());\r\n cpx = p.shift();\r\n cpy = p.shift();\r\n points.push(cpx, cpy);\r\n break;\r\n case 'c':\r\n points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\r\n cpx += p.shift();\r\n cpy += p.shift();\r\n cmd = 'C';\r\n points.push(cpx, cpy);\r\n break;\r\n case 'S':\r\n ctlPtx = cpx;\r\n ctlPty = cpy;\r\n prevCmd = ca[ca.length - 1];\r\n if (prevCmd.command === 'C') {\r\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\r\n ctlPty = cpy + (cpy - prevCmd.points[3]);\r\n }\r\n points.push(ctlPtx, ctlPty, p.shift(), p.shift());\r\n cpx = p.shift();\r\n cpy = p.shift();\r\n cmd = 'C';\r\n points.push(cpx, cpy);\r\n break;\r\n case 's':\r\n ctlPtx = cpx;\r\n ctlPty = cpy;\r\n prevCmd = ca[ca.length - 1];\r\n if (prevCmd.command === 'C') {\r\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\r\n ctlPty = cpy + (cpy - prevCmd.points[3]);\r\n }\r\n points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\r\n cpx += p.shift();\r\n cpy += p.shift();\r\n cmd = 'C';\r\n points.push(cpx, cpy);\r\n break;\r\n case 'Q':\r\n points.push(p.shift(), p.shift());\r\n cpx = p.shift();\r\n cpy = p.shift();\r\n points.push(cpx, cpy);\r\n break;\r\n case 'q':\r\n points.push(cpx + p.shift(), cpy + p.shift());\r\n cpx += p.shift();\r\n cpy += p.shift();\r\n cmd = 'Q';\r\n points.push(cpx, cpy);\r\n break;\r\n case 'T':\r\n ctlPtx = cpx;\r\n ctlPty = cpy;\r\n prevCmd = ca[ca.length - 1];\r\n if (prevCmd.command === 'Q') {\r\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\r\n ctlPty = cpy + (cpy - prevCmd.points[1]);\r\n }\r\n cpx = p.shift();\r\n cpy = p.shift();\r\n cmd = 'Q';\r\n points.push(ctlPtx, ctlPty, cpx, cpy);\r\n break;\r\n case 't':\r\n ctlPtx = cpx;\r\n ctlPty = cpy;\r\n prevCmd = ca[ca.length - 1];\r\n if (prevCmd.command === 'Q') {\r\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\r\n ctlPty = cpy + (cpy - prevCmd.points[1]);\r\n }\r\n cpx += p.shift();\r\n cpy += p.shift();\r\n cmd = 'Q';\r\n points.push(ctlPtx, ctlPty, cpx, cpy);\r\n break;\r\n case 'A':\r\n rx = p.shift();\r\n ry = p.shift();\r\n psi = p.shift();\r\n fa = p.shift();\r\n fs = p.shift();\r\n x1 = cpx;\r\n y1 = cpy;\r\n cpx = p.shift();\r\n cpy = p.shift();\r\n cmd = 'A';\r\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\r\n break;\r\n case 'a':\r\n rx = p.shift();\r\n ry = p.shift();\r\n psi = p.shift();\r\n fa = p.shift();\r\n fs = p.shift();\r\n x1 = cpx;\r\n y1 = cpy;\r\n cpx += p.shift();\r\n cpy += p.shift();\r\n cmd = 'A';\r\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\r\n break;\r\n }\r\n ca.push({\r\n command: cmd || c,\r\n points: points,\r\n start: {\r\n x: startX,\r\n y: startY\r\n },\r\n pathLength: this.calcLength(startX, startY, cmd || c, points)\r\n });\r\n }\r\n if (c === 'z' || c === 'Z') {\r\n ca.push({\r\n command: 'z',\r\n points: [],\r\n start: undefined,\r\n pathLength: 0\r\n });\r\n }\r\n }\r\n return ca;\r\n };\r\n Path.calcLength = function (x, y, cmd, points) {\r\n var len, p1, p2, t;\r\n var path = Path;\r\n switch (cmd) {\r\n case 'L':\r\n return path.getLineLength(x, y, points[0], points[1]);\r\n case 'C':\r\n // Approximates by breaking curve into 100 line segments\r\n len = 0.0;\r\n p1 = path.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\r\n for (t = 0.01; t <= 1; t += 0.01) {\r\n p2 = path.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\r\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\r\n p1 = p2;\r\n }\r\n return len;\r\n case 'Q':\r\n // Approximates by breaking curve into 100 line segments\r\n len = 0.0;\r\n p1 = path.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\r\n for (t = 0.01; t <= 1; t += 0.01) {\r\n p2 = path.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\r\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\r\n p1 = p2;\r\n }\r\n return len;\r\n case 'A':\r\n // Approximates by breaking curve into line segments\r\n len = 0.0;\r\n var start = points[4];\r\n // 4 = theta\r\n var dTheta = points[5];\r\n // 5 = dTheta\r\n var end = points[4] + dTheta;\r\n var inc = Math.PI / 180.0;\r\n // 1 degree resolution\r\n if (Math.abs(start - end) < inc) {\r\n inc = Math.abs(start - end);\r\n }\r\n // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\r\n p1 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\r\n if (dTheta < 0) {\r\n // clockwise\r\n for (t = start - inc; t > end; t -= inc) {\r\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\r\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\r\n p1 = p2;\r\n }\r\n }\r\n else {\r\n // counter-clockwise\r\n for (t = start + inc; t < end; t += inc) {\r\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\r\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\r\n p1 = p2;\r\n }\r\n }\r\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\r\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\r\n return len;\r\n }\r\n return 0;\r\n };\r\n Path.convertEndpointToCenterParameterization = function (x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\r\n // Derived from: http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes\r\n var psi = psiDeg * (Math.PI / 180.0);\r\n var xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\r\n var yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\r\n (Math.cos(psi) * (y1 - y2)) / 2.0;\r\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\r\n if (lambda > 1) {\r\n rx *= Math.sqrt(lambda);\r\n ry *= Math.sqrt(lambda);\r\n }\r\n var f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\r\n (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\r\n if (fa === fs) {\r\n f *= -1;\r\n }\r\n if (isNaN(f)) {\r\n f = 0;\r\n }\r\n var cxp = (f * rx * yp) / ry;\r\n var cyp = (f * -ry * xp) / rx;\r\n var cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\r\n var cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\r\n var vMag = function (v) {\r\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\r\n };\r\n var vRatio = function (u, v) {\r\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\r\n };\r\n var vAngle = function (u, v) {\r\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\r\n };\r\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\r\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\r\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\r\n var dTheta = vAngle(u, v);\r\n if (vRatio(u, v) <= -1) {\r\n dTheta = Math.PI;\r\n }\r\n if (vRatio(u, v) >= 1) {\r\n dTheta = 0;\r\n }\r\n if (fs === 0 && dTheta > 0) {\r\n dTheta = dTheta - 2 * Math.PI;\r\n }\r\n if (fs === 1 && dTheta < 0) {\r\n dTheta = dTheta + 2 * Math.PI;\r\n }\r\n return [cx, cy, rx, ry, theta, dTheta, psi, fs];\r\n };\r\n return Path;\r\n }(Shape));\r\n Path.prototype.className = 'Path';\r\n Path.prototype._attrsAffectingSize = ['data'];\r\n _registerNode(Path);\r\n /**\r\n * get/set SVG path data string. This method\r\n * also automatically parses the data string\r\n * into a data array. Currently supported SVG data:\r\n * M, m, L, l, H, h, V, v, Q, q, T, t, C, c, S, s, A, a, Z, z\r\n * @name Konva.Path#data\r\n * @method\r\n * @param {String} data svg path string\r\n * @returns {String}\r\n * @example\r\n * // get data\r\n * var data = path.data();\r\n *\r\n * // set data\r\n * path.data('M200,100h100v50z');\r\n */\r\n Factory.addGetterSetter(Path, 'data');\r\n Collection.mapMethods(Path);\n\n /**\r\n * Rect constructor\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {Number} [config.cornerRadius]\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var rect = new Konva.Rect({\r\n * width: 100,\r\n * height: 50,\r\n * fill: 'red',\r\n * stroke: 'black',\r\n * strokeWidth: 5\r\n * });\r\n */\r\n var Rect = /** @class */ (function (_super) {\r\n __extends(Rect, _super);\r\n function Rect() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Rect.prototype._sceneFunc = function (context) {\r\n var cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\r\n context.beginPath();\r\n if (!cornerRadius) {\r\n // simple rect - don't bother doing all that complicated maths stuff.\r\n context.rect(0, 0, width, height);\r\n }\r\n else {\r\n var topLeft = 0;\r\n var topRight = 0;\r\n var bottomLeft = 0;\r\n var bottomRight = 0;\r\n if (typeof cornerRadius === 'number') {\r\n topLeft = topRight = bottomLeft = bottomRight = Math.min(cornerRadius, width / 2, height / 2);\r\n }\r\n else {\r\n topLeft = Math.min(cornerRadius[0], width / 2, height / 2);\r\n topRight = Math.min(cornerRadius[1], width / 2, height / 2);\r\n bottomRight = Math.min(cornerRadius[2], width / 2, height / 2);\r\n bottomLeft = Math.min(cornerRadius[3], width / 2, height / 2);\r\n }\r\n context.moveTo(topLeft, 0);\r\n context.lineTo(width - topRight, 0);\r\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\r\n context.lineTo(width, height - bottomRight);\r\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\r\n context.lineTo(bottomLeft, height);\r\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\r\n context.lineTo(0, topLeft);\r\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\r\n }\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n };\r\n return Rect;\r\n }(Shape));\r\n Rect.prototype.className = 'Rect';\r\n _registerNode(Rect);\r\n /**\r\n * get/set corner radius\r\n * @method\r\n * @name Konva.Rect#cornerRadius\r\n * @param {Number} cornerRadius\r\n * @returns {Number}\r\n * @example\r\n * // get corner radius\r\n * var cornerRadius = rect.cornerRadius();\r\n *\r\n * // set corner radius\r\n * rect.cornerRadius(10);\r\n *\r\n * // set different corner radius values\r\n * // top-left, top-right, bottom-right, bottom-left\r\n * rect.cornerRadius([0, 10, 20, 30]);\r\n */\r\n Factory.addGetterSetter(Rect, 'cornerRadius', 0);\r\n Collection.mapMethods(Rect);\n\n /**\r\n * RegularPolygon constructor. Examples include triangles, squares, pentagons, hexagons, etc.\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {Number} config.sides\r\n * @param {Number} config.radius\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var hexagon = new Konva.RegularPolygon({\r\n * x: 100,\r\n * y: 200,\r\n * sides: 6,\r\n * radius: 70,\r\n * fill: 'red',\r\n * stroke: 'black',\r\n * strokeWidth: 4\r\n * });\r\n */\r\n var RegularPolygon = /** @class */ (function (_super) {\r\n __extends(RegularPolygon, _super);\r\n function RegularPolygon() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RegularPolygon.prototype._sceneFunc = function (context) {\r\n var sides = this.sides(), radius = this.radius(), n, x, y;\r\n context.beginPath();\r\n context.moveTo(0, 0 - radius);\r\n for (n = 1; n < sides; n++) {\r\n x = radius * Math.sin((n * 2 * Math.PI) / sides);\r\n y = -1 * radius * Math.cos((n * 2 * Math.PI) / sides);\r\n context.lineTo(x, y);\r\n }\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n };\r\n RegularPolygon.prototype.getWidth = function () {\r\n return this.radius() * 2;\r\n };\r\n RegularPolygon.prototype.getHeight = function () {\r\n return this.radius() * 2;\r\n };\r\n RegularPolygon.prototype.setWidth = function (width) {\r\n this.radius(width / 2);\r\n };\r\n RegularPolygon.prototype.setHeight = function (height) {\r\n this.radius(height / 2);\r\n };\r\n return RegularPolygon;\r\n }(Shape));\r\n RegularPolygon.prototype.className = 'RegularPolygon';\r\n RegularPolygon.prototype._centroid = true;\r\n RegularPolygon.prototype._attrsAffectingSize = ['radius'];\r\n _registerNode(RegularPolygon);\r\n /**\r\n * get/set radius\r\n * @method\r\n * @name Konva.RegularPolygon#radius\r\n * @param {Number} radius\r\n * @returns {Number}\r\n * @example\r\n * // get radius\r\n * var radius = shape.radius();\r\n *\r\n * // set radius\r\n * shape.radius(10);\r\n */\r\n Factory.addGetterSetter(RegularPolygon, 'radius', 0, getNumberValidator());\r\n /**\r\n * get/set sides\r\n * @method\r\n * @name Konva.RegularPolygon#sides\r\n * @param {Number} sides\r\n * @returns {Number}\r\n * @example\r\n * // get sides\r\n * var sides = shape.sides();\r\n *\r\n * // set sides\r\n * shape.sides(10);\r\n */\r\n Factory.addGetterSetter(RegularPolygon, 'sides', 0, getNumberValidator());\r\n Collection.mapMethods(RegularPolygon);\n\n var PIx2 = Math.PI * 2;\r\n /**\r\n * Ring constructor\r\n * @constructor\r\n * @augments Konva.Shape\r\n * @memberof Konva\r\n * @param {Object} config\r\n * @param {Number} config.innerRadius\r\n * @param {Number} config.outerRadius\r\n * @param {Boolean} [config.clockwise]\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var ring = new Konva.Ring({\r\n * innerRadius: 40,\r\n * outerRadius: 80,\r\n * fill: 'red',\r\n * stroke: 'black',\r\n * strokeWidth: 5\r\n * });\r\n */\r\n var Ring = /** @class */ (function (_super) {\r\n __extends(Ring, _super);\r\n function Ring() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Ring.prototype._sceneFunc = function (context) {\r\n context.beginPath();\r\n context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\r\n context.moveTo(this.outerRadius(), 0);\r\n context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n };\r\n Ring.prototype.getWidth = function () {\r\n return this.outerRadius() * 2;\r\n };\r\n Ring.prototype.getHeight = function () {\r\n return this.outerRadius() * 2;\r\n };\r\n Ring.prototype.setWidth = function (width) {\r\n this.outerRadius(width / 2);\r\n };\r\n Ring.prototype.setHeight = function (height) {\r\n this.outerRadius(height / 2);\r\n };\r\n return Ring;\r\n }(Shape));\r\n Ring.prototype.className = 'Ring';\r\n Ring.prototype._centroid = true;\r\n Ring.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\r\n _registerNode(Ring);\r\n /**\r\n * get/set innerRadius\r\n * @method\r\n * @name Konva.Ring#innerRadius\r\n * @param {Number} innerRadius\r\n * @returns {Number}\r\n * @example\r\n * // get inner radius\r\n * var innerRadius = ring.innerRadius();\r\n *\r\n * // set inner radius\r\n * ring.innerRadius(20);\r\n */\r\n Factory.addGetterSetter(Ring, 'innerRadius', 0, getNumberValidator());\r\n /**\r\n * get/set outerRadius\r\n * @name Konva.Ring#outerRadius\r\n * @method\r\n * @param {Number} outerRadius\r\n * @returns {Number}\r\n * @example\r\n * // get outer radius\r\n * var outerRadius = ring.outerRadius();\r\n *\r\n * // set outer radius\r\n * ring.outerRadius(20);\r\n */\r\n Factory.addGetterSetter(Ring, 'outerRadius', 0, getNumberValidator());\r\n Collection.mapMethods(Ring);\n\n /**\r\n * Sprite constructor\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {String} config.animation animation key\r\n * @param {Object} config.animations animation map\r\n * @param {Integer} [config.frameIndex] animation frame index\r\n * @param {Image} config.image image object\r\n * @param {Integer} [config.frameRate] animation frame rate\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var imageObj = new Image();\r\n * imageObj.onload = function() {\r\n * var sprite = new Konva.Sprite({\r\n * x: 200,\r\n * y: 100,\r\n * image: imageObj,\r\n * animation: 'standing',\r\n * animations: {\r\n * standing: [\r\n * // x, y, width, height (6 frames)\r\n * 0, 0, 49, 109,\r\n * 52, 0, 49, 109,\r\n * 105, 0, 49, 109,\r\n * 158, 0, 49, 109,\r\n * 210, 0, 49, 109,\r\n * 262, 0, 49, 109\r\n * ],\r\n * kicking: [\r\n * // x, y, width, height (6 frames)\r\n * 0, 109, 45, 98,\r\n * 45, 109, 45, 98,\r\n * 95, 109, 63, 98,\r\n * 156, 109, 70, 98,\r\n * 229, 109, 60, 98,\r\n * 287, 109, 41, 98\r\n * ]\r\n * },\r\n * frameRate: 7,\r\n * frameIndex: 0\r\n * });\r\n * };\r\n * imageObj.src = '/path/to/image.jpg'\r\n */\r\n var Sprite = /** @class */ (function (_super) {\r\n __extends(Sprite, _super);\r\n function Sprite(config) {\r\n var _this = _super.call(this, config) || this;\r\n _this._updated = true;\r\n _this.anim = new Animation(function () {\r\n // if we don't need to redraw layer we should return false\r\n var updated = _this._updated;\r\n _this._updated = false;\r\n return updated;\r\n });\r\n _this.on('animationChange.konva', function () {\r\n // reset index when animation changes\r\n this.frameIndex(0);\r\n });\r\n _this.on('frameIndexChange.konva', function () {\r\n this._updated = true;\r\n });\r\n // smooth change for frameRate\r\n _this.on('frameRateChange.konva', function () {\r\n if (!this.anim.isRunning()) {\r\n return;\r\n }\r\n clearInterval(this.interval);\r\n this._setInterval();\r\n });\r\n return _this;\r\n }\r\n Sprite.prototype._sceneFunc = function (context) {\r\n var anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\r\n if (this.hasFill() || this.hasStroke()) {\r\n context.beginPath();\r\n context.rect(0, 0, width, height);\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n }\r\n if (image) {\r\n if (offsets) {\r\n var offset = offsets[anim], ix2 = index * 2;\r\n context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\r\n }\r\n else {\r\n context.drawImage(image, x, y, width, height, 0, 0, width, height);\r\n }\r\n }\r\n };\r\n Sprite.prototype._hitFunc = function (context) {\r\n var anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\r\n context.beginPath();\r\n if (offsets) {\r\n var offset = offsets[anim];\r\n var ix2 = index * 2;\r\n context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\r\n }\r\n else {\r\n context.rect(0, 0, width, height);\r\n }\r\n context.closePath();\r\n context.fillShape(this);\r\n };\r\n Sprite.prototype._useBufferCanvas = function () {\r\n return _super.prototype._useBufferCanvas.call(this, true);\r\n };\r\n Sprite.prototype._setInterval = function () {\r\n var that = this;\r\n this.interval = setInterval(function () {\r\n that._updateIndex();\r\n }, 1000 / this.frameRate());\r\n };\r\n /**\r\n * start sprite animation\r\n * @method\r\n * @name Konva.Sprite#start\r\n */\r\n Sprite.prototype.start = function () {\r\n if (this.isRunning()) {\r\n return;\r\n }\r\n var layer = this.getLayer();\r\n /*\r\n * animation object has no executable function because\r\n * the updates are done with a fixed FPS with the setInterval\r\n * below. The anim object only needs the layer reference for\r\n * redraw\r\n */\r\n this.anim.setLayers(layer);\r\n this._setInterval();\r\n this.anim.start();\r\n };\r\n /**\r\n * stop sprite animation\r\n * @method\r\n * @name Konva.Sprite#stop\r\n */\r\n Sprite.prototype.stop = function () {\r\n this.anim.stop();\r\n clearInterval(this.interval);\r\n };\r\n /**\r\n * determine if animation of sprite is running or not. returns true or false\r\n * @method\r\n * @name Konva.Sprite#isRunning\r\n * @returns {Boolean}\r\n */\r\n Sprite.prototype.isRunning = function () {\r\n return this.anim.isRunning();\r\n };\r\n Sprite.prototype._updateIndex = function () {\r\n var index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\r\n if (index < len - 1) {\r\n this.frameIndex(index + 1);\r\n }\r\n else {\r\n this.frameIndex(0);\r\n }\r\n };\r\n return Sprite;\r\n }(Shape));\r\n Sprite.prototype.className = 'Sprite';\r\n _registerNode(Sprite);\r\n // add getters setters\r\n Factory.addGetterSetter(Sprite, 'animation');\r\n /**\r\n * get/set animation key\r\n * @name Konva.Sprite#animation\r\n * @method\r\n * @param {String} anim animation key\r\n * @returns {String}\r\n * @example\r\n * // get animation key\r\n * var animation = sprite.animation();\r\n *\r\n * // set animation key\r\n * sprite.animation('kicking');\r\n */\r\n Factory.addGetterSetter(Sprite, 'animations');\r\n /**\r\n * get/set animations map\r\n * @name Konva.Sprite#animations\r\n * @method\r\n * @param {Object} animations\r\n * @returns {Object}\r\n * @example\r\n * // get animations map\r\n * var animations = sprite.animations();\r\n *\r\n * // set animations map\r\n * sprite.animations({\r\n * standing: [\r\n * // x, y, width, height (6 frames)\r\n * 0, 0, 49, 109,\r\n * 52, 0, 49, 109,\r\n * 105, 0, 49, 109,\r\n * 158, 0, 49, 109,\r\n * 210, 0, 49, 109,\r\n * 262, 0, 49, 109\r\n * ],\r\n * kicking: [\r\n * // x, y, width, height (6 frames)\r\n * 0, 109, 45, 98,\r\n * 45, 109, 45, 98,\r\n * 95, 109, 63, 98,\r\n * 156, 109, 70, 98,\r\n * 229, 109, 60, 98,\r\n * 287, 109, 41, 98\r\n * ]\r\n * });\r\n */\r\n Factory.addGetterSetter(Sprite, 'frameOffsets');\r\n /**\r\n * get/set offsets map\r\n * @name Konva.Sprite#offsets\r\n * @method\r\n * @param {Object} offsets\r\n * @returns {Object}\r\n * @example\r\n * // get offsets map\r\n * var offsets = sprite.offsets();\r\n *\r\n * // set offsets map\r\n * sprite.offsets({\r\n * standing: [\r\n * // x, y (6 frames)\r\n * 0, 0,\r\n * 0, 0,\r\n * 5, 0,\r\n * 0, 0,\r\n * 0, 3,\r\n * 2, 0\r\n * ],\r\n * kicking: [\r\n * // x, y (6 frames)\r\n * 0, 5,\r\n * 5, 0,\r\n * 10, 0,\r\n * 0, 0,\r\n * 2, 1,\r\n * 0, 0\r\n * ]\r\n * });\r\n */\r\n Factory.addGetterSetter(Sprite, 'image');\r\n /**\r\n * get/set image\r\n * @name Konva.Sprite#image\r\n * @method\r\n * @param {Image} image\r\n * @returns {Image}\r\n * @example\r\n * // get image\r\n * var image = sprite.image();\r\n *\r\n * // set image\r\n * sprite.image(imageObj);\r\n */\r\n Factory.addGetterSetter(Sprite, 'frameIndex', 0, getNumberValidator());\r\n /**\r\n * set/set animation frame index\r\n * @name Konva.Sprite#frameIndex\r\n * @method\r\n * @param {Integer} frameIndex\r\n * @returns {Integer}\r\n * @example\r\n * // get animation frame index\r\n * var frameIndex = sprite.frameIndex();\r\n *\r\n * // set animation frame index\r\n * sprite.frameIndex(3);\r\n */\r\n Factory.addGetterSetter(Sprite, 'frameRate', 17, getNumberValidator());\r\n /**\r\n * get/set frame rate in frames per second. Increase this number to make the sprite\r\n * animation run faster, and decrease the number to make the sprite animation run slower\r\n * The default is 17 frames per second\r\n * @name Konva.Sprite#frameRate\r\n * @method\r\n * @param {Integer} frameRate\r\n * @returns {Integer}\r\n * @example\r\n * // get frame rate\r\n * var frameRate = sprite.frameRate();\r\n *\r\n * // set frame rate to 2 frames per second\r\n * sprite.frameRate(2);\r\n */\r\n Factory.backCompat(Sprite, {\r\n index: 'frameIndex',\r\n getIndex: 'getFrameIndex',\r\n setIndex: 'setFrameIndex',\r\n });\r\n Collection.mapMethods(Sprite);\n\n /**\r\n * Star constructor\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {Integer} config.numPoints\r\n * @param {Number} config.innerRadius\r\n * @param {Number} config.outerRadius\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var star = new Konva.Star({\r\n * x: 100,\r\n * y: 200,\r\n * numPoints: 5,\r\n * innerRadius: 70,\r\n * outerRadius: 70,\r\n * fill: 'red',\r\n * stroke: 'black',\r\n * strokeWidth: 4\r\n * });\r\n */\r\n var Star = /** @class */ (function (_super) {\r\n __extends(Star, _super);\r\n function Star() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Star.prototype._sceneFunc = function (context) {\r\n var innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\r\n context.beginPath();\r\n context.moveTo(0, 0 - outerRadius);\r\n for (var n = 1; n < numPoints * 2; n++) {\r\n var radius = n % 2 === 0 ? outerRadius : innerRadius;\r\n var x = radius * Math.sin((n * Math.PI) / numPoints);\r\n var y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\r\n context.lineTo(x, y);\r\n }\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n };\r\n Star.prototype.getWidth = function () {\r\n return this.outerRadius() * 2;\r\n };\r\n Star.prototype.getHeight = function () {\r\n return this.outerRadius() * 2;\r\n };\r\n Star.prototype.setWidth = function (width) {\r\n this.outerRadius(width / 2);\r\n };\r\n Star.prototype.setHeight = function (height) {\r\n this.outerRadius(height / 2);\r\n };\r\n return Star;\r\n }(Shape));\r\n Star.prototype.className = 'Star';\r\n Star.prototype._centroid = true;\r\n Star.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\r\n _registerNode(Star);\r\n /**\r\n * get/set number of points\r\n * @name Konva.Ring#numPoints\r\n * @method\r\n * @param {Number} numPoints\r\n * @returns {Number}\r\n * @example\r\n * // get inner radius\r\n * var numPoints = ring.numPoints();\r\n *\r\n * // set inner radius\r\n * ring.numPoints(20);\r\n */\r\n Factory.addGetterSetter(Star, 'numPoints', 5, getNumberValidator());\r\n /**\r\n * get/set innerRadius\r\n * @name Konva.Ring#innerRadius\r\n * @method\r\n * @param {Number} innerRadius\r\n * @returns {Number}\r\n * @example\r\n * // get inner radius\r\n * var innerRadius = ring.innerRadius();\r\n *\r\n * // set inner radius\r\n * ring.innerRadius(20);\r\n */\r\n Factory.addGetterSetter(Star, 'innerRadius', 0, getNumberValidator());\r\n /**\r\n * get/set outerRadius\r\n * @name Konva.Ring#outerRadius\r\n * @method\r\n * @param {Number} outerRadius\r\n * @returns {Number}\r\n * @example\r\n * // get inner radius\r\n * var outerRadius = ring.outerRadius();\r\n *\r\n * // set inner radius\r\n * ring.outerRadius(20);\r\n */\r\n Factory.addGetterSetter(Star, 'outerRadius', 0, getNumberValidator());\r\n Collection.mapMethods(Star);\n\n // constants\r\n var AUTO = 'auto', \r\n //CANVAS = 'canvas',\r\n CENTER = 'center', JUSTIFY = 'justify', CHANGE_KONVA$1 = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT$1 = 'left', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE$1 = ' ', RIGHT$1 = 'right', WORD = 'word', CHAR = 'char', NONE$1 = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST$1 = [\r\n 'fontFamily',\r\n 'fontSize',\r\n 'fontStyle',\r\n 'fontVariant',\r\n 'padding',\r\n 'align',\r\n 'verticalAlign',\r\n 'lineHeight',\r\n 'text',\r\n 'width',\r\n 'height',\r\n 'wrap',\r\n 'ellipsis',\r\n 'letterSpacing',\r\n ], \r\n // cached variables\r\n attrChangeListLen$1 = ATTR_CHANGE_LIST$1.length;\r\n function normalizeFontFamily(fontFamily) {\r\n return fontFamily\r\n .split(',')\r\n .map(function (family) {\r\n family = family.trim();\r\n var hasSpace = family.indexOf(' ') >= 0;\r\n var hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\r\n if (hasSpace && !hasQuotes) {\r\n family = \"\\\"\" + family + \"\\\"\";\r\n }\r\n return family;\r\n })\r\n .join(', ');\r\n }\r\n var dummyContext$1;\r\n function getDummyContext$1() {\r\n if (dummyContext$1) {\r\n return dummyContext$1;\r\n }\r\n dummyContext$1 = Util.createCanvasElement().getContext(CONTEXT_2D);\r\n return dummyContext$1;\r\n }\r\n function _fillFunc$1(context) {\r\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\r\n }\r\n function _strokeFunc$1(context) {\r\n context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\r\n }\r\n function checkDefaultFill(config) {\r\n config = config || {};\r\n // set default color to black\r\n if (!config.fillLinearGradientColorStops &&\r\n !config.fillRadialGradientColorStops &&\r\n !config.fillPatternImage) {\r\n config.fill = config.fill || 'black';\r\n }\r\n return config;\r\n }\r\n /**\r\n * Text constructor\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {String} [config.fontFamily] default is Arial\r\n * @param {Number} [config.fontSize] in pixels. Default is 12\r\n * @param {String} [config.fontStyle] can be normal, bold, or italic. Default is normal\r\n * @param {String} [config.fontVariant] can be normal or small-caps. Default is normal\r\n * @param {String} [config.textDecoration] can be line-through, underline or empty string. Default is empty string.\r\n * @param {String} config.text\r\n * @param {String} [config.align] can be left, center, or right\r\n * @param {String} [config.verticalAlign] can be top, middle or bottom\r\n * @param {Number} [config.padding]\r\n * @param {Number} [config.lineHeight] default is 1\r\n * @param {String} [config.wrap] can be \"word\", \"char\", or \"none\". Default is word\r\n * @param {Boolean} [config.ellipsis] can be true or false. Default is false. if Konva.Text config is set to wrap=\"none\" and ellipsis=true, then it will add \"...\" to the end\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var text = new Konva.Text({\r\n * x: 10,\r\n * y: 15,\r\n * text: 'Simple Text',\r\n * fontSize: 30,\r\n * fontFamily: 'Calibri',\r\n * fill: 'green'\r\n * });\r\n */\r\n var Text = /** @class */ (function (_super) {\r\n __extends(Text, _super);\r\n function Text(config) {\r\n var _this = _super.call(this, checkDefaultFill(config)) || this;\r\n _this._partialTextX = 0;\r\n _this._partialTextY = 0;\r\n // update text data for certain attr changes\r\n for (var n = 0; n < attrChangeListLen$1; n++) {\r\n _this.on(ATTR_CHANGE_LIST$1[n] + CHANGE_KONVA$1, _this._setTextData);\r\n }\r\n _this._setTextData();\r\n return _this;\r\n }\r\n Text.prototype._sceneFunc = function (context) {\r\n var padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, textArr = this.textArr, textArrLen = textArr.length, verticalAlign = this.verticalAlign(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\r\n var translateY = 0;\r\n var translateY = lineHeightPx / 2;\r\n var lineTranslateX = 0;\r\n var lineTranslateY = 0;\r\n context.setAttr('font', this._getContextFont());\r\n context.setAttr('textBaseline', MIDDLE);\r\n context.setAttr('textAlign', LEFT$1);\r\n // handle vertical alignment\r\n if (verticalAlign === MIDDLE) {\r\n alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\r\n }\r\n else if (verticalAlign === BOTTOM) {\r\n alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\r\n }\r\n context.translate(padding, alignY + padding);\r\n // draw text lines\r\n for (n = 0; n < textArrLen; n++) {\r\n var lineTranslateX = 0;\r\n var lineTranslateY = 0;\r\n var obj = textArr[n], text = obj.text, width = obj.width, lastLine = n !== textArrLen - 1, spacesNumber, oneWord, lineWidth;\r\n // horizontal alignment\r\n context.save();\r\n if (align === RIGHT$1) {\r\n lineTranslateX += totalWidth - width - padding * 2;\r\n }\r\n else if (align === CENTER) {\r\n lineTranslateX += (totalWidth - width - padding * 2) / 2;\r\n }\r\n if (shouldUnderline) {\r\n context.save();\r\n context.beginPath();\r\n context.moveTo(lineTranslateX, translateY + lineTranslateY + Math.round(fontSize / 2));\r\n spacesNumber = text.split(' ').length - 1;\r\n oneWord = spacesNumber === 0;\r\n lineWidth =\r\n align === JUSTIFY && lastLine && !oneWord\r\n ? totalWidth - padding * 2\r\n : width;\r\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY + Math.round(fontSize / 2));\r\n // I have no idea what is real ratio\r\n // just /15 looks good enough\r\n context.lineWidth = fontSize / 15;\r\n context.strokeStyle = fill;\r\n context.stroke();\r\n context.restore();\r\n }\r\n if (shouldLineThrough) {\r\n context.save();\r\n context.beginPath();\r\n context.moveTo(lineTranslateX, translateY + lineTranslateY);\r\n spacesNumber = text.split(' ').length - 1;\r\n oneWord = spacesNumber === 0;\r\n lineWidth =\r\n align === JUSTIFY && lastLine && !oneWord\r\n ? totalWidth - padding * 2\r\n : width;\r\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY);\r\n context.lineWidth = fontSize / 15;\r\n context.strokeStyle = fill;\r\n context.stroke();\r\n context.restore();\r\n }\r\n if (letterSpacing !== 0 || align === JUSTIFY) {\r\n // var words = text.split(' ');\r\n spacesNumber = text.split(' ').length - 1;\r\n for (var li = 0; li < text.length; li++) {\r\n var letter = text[li];\r\n // skip justify for the last line\r\n if (letter === ' ' && n !== textArrLen - 1 && align === JUSTIFY) {\r\n lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\r\n // context.translate(\r\n // Math.floor((totalWidth - padding * 2 - width) / spacesNumber),\r\n // 0\r\n // );\r\n }\r\n this._partialTextX = lineTranslateX;\r\n this._partialTextY = translateY + lineTranslateY;\r\n this._partialText = letter;\r\n context.fillStrokeShape(this);\r\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\r\n }\r\n }\r\n else {\r\n this._partialTextX = lineTranslateX;\r\n this._partialTextY = translateY + lineTranslateY;\r\n this._partialText = text;\r\n context.fillStrokeShape(this);\r\n }\r\n context.restore();\r\n if (textArrLen > 1) {\r\n translateY += lineHeightPx;\r\n }\r\n }\r\n };\r\n Text.prototype._hitFunc = function (context) {\r\n var width = this.getWidth(), height = this.getHeight();\r\n context.beginPath();\r\n context.rect(0, 0, width, height);\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n };\r\n Text.prototype.setText = function (text) {\r\n var str = Util._isString(text)\r\n ? text\r\n : text === null || text === undefined\r\n ? ''\r\n : text + '';\r\n this._setAttr(TEXT, str);\r\n return this;\r\n };\r\n Text.prototype.getWidth = function () {\r\n var isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\r\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\r\n };\r\n Text.prototype.getHeight = function () {\r\n var isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\r\n return isAuto\r\n ? this.fontSize() * this.textArr.length * this.lineHeight() +\r\n this.padding() * 2\r\n : this.attrs.height;\r\n };\r\n /**\r\n * get pure text width without padding\r\n * @method\r\n * @name Konva.Text#getTextWidth\r\n * @returns {Number}\r\n */\r\n Text.prototype.getTextWidth = function () {\r\n return this.textWidth;\r\n };\r\n Text.prototype.getTextHeight = function () {\r\n Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\r\n return this.textHeight;\r\n };\r\n /**\r\n * measure string with the font of current text shape.\r\n * That method can't handle multiline text.\r\n * @method\r\n * @name Konva.Text#measureSize\r\n * @param {String} [text] text to measure\r\n * @returns {Object} { width , height} of measured text\r\n */\r\n Text.prototype.measureSize = function (text) {\r\n var _context = getDummyContext$1(), fontSize = this.fontSize(), metrics;\r\n _context.save();\r\n _context.font = this._getContextFont();\r\n metrics = _context.measureText(text);\r\n _context.restore();\r\n return {\r\n width: metrics.width,\r\n height: fontSize,\r\n };\r\n };\r\n Text.prototype._getContextFont = function () {\r\n // IE don't want to work with usual font style\r\n // bold was not working\r\n // removing font variant will solve\r\n // fix for: https://github.com/konvajs/konva/issues/94\r\n if (Konva.UA.isIE) {\r\n return (this.fontStyle() +\r\n SPACE$1 +\r\n this.fontSize() +\r\n PX_SPACE +\r\n this.fontFamily());\r\n }\r\n return (this.fontStyle() +\r\n SPACE$1 +\r\n this.fontVariant() +\r\n SPACE$1 +\r\n (this.fontSize() + PX_SPACE) +\r\n // wrap font family into \" so font families with spaces works ok\r\n normalizeFontFamily(this.fontFamily()));\r\n };\r\n Text.prototype._addTextLine = function (line) {\r\n if (this.align() === JUSTIFY) {\r\n line = line.trim();\r\n }\r\n var width = this._getTextWidth(line);\r\n return this.textArr.push({ text: line, width: width });\r\n };\r\n Text.prototype._getTextWidth = function (text) {\r\n var letterSpacing = this.letterSpacing();\r\n var length = text.length;\r\n return (getDummyContext$1().measureText(text).width +\r\n (length ? letterSpacing * (length - 1) : 0));\r\n };\r\n Text.prototype._setTextData = function () {\r\n var lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), \r\n // align = this.align(),\r\n shouldWrap = wrap !== NONE$1, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis() && !shouldWrap;\r\n this.textArr = [];\r\n getDummyContext$1().font = this._getContextFont();\r\n var additionalWidth = shouldAddEllipsis ? this._getTextWidth(ELLIPSIS) : 0;\r\n for (var i = 0, max = lines.length; i < max; ++i) {\r\n var line = lines[i];\r\n var lineWidth = this._getTextWidth(line);\r\n if (fixedWidth && lineWidth > maxWidth) {\r\n /*\r\n * if width is fixed and line does not fit entirely\r\n * break the line into multiple fitting lines\r\n */\r\n while (line.length > 0) {\r\n /*\r\n * use binary search to find the longest substring that\r\n * that would fit in the specified width\r\n */\r\n var low = 0, high = line.length, match = '', matchWidth = 0;\r\n while (low < high) {\r\n var mid = (low + high) >>> 1, substr = line.slice(0, mid + 1), substrWidth = this._getTextWidth(substr) + additionalWidth;\r\n if (substrWidth <= maxWidth) {\r\n low = mid + 1;\r\n match = substr + (shouldAddEllipsis ? ELLIPSIS : '');\r\n matchWidth = substrWidth;\r\n }\r\n else {\r\n high = mid;\r\n }\r\n }\r\n /*\r\n * 'low' is now the index of the substring end\r\n * 'match' is the substring\r\n * 'matchWidth' is the substring width in px\r\n */\r\n if (match) {\r\n // a fitting substring was found\r\n if (wrapAtWord) {\r\n // try to find a space or dash where wrapping could be done\r\n var wrapIndex;\r\n var nextChar = line[match.length];\r\n var nextIsSpaceOrDash = nextChar === SPACE$1 || nextChar === DASH;\r\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\r\n wrapIndex = match.length;\r\n }\r\n else {\r\n wrapIndex =\r\n Math.max(match.lastIndexOf(SPACE$1), match.lastIndexOf(DASH)) +\r\n 1;\r\n }\r\n if (wrapIndex > 0) {\r\n // re-cut the substring found at the space/dash position\r\n low = wrapIndex;\r\n match = match.slice(0, low);\r\n matchWidth = this._getTextWidth(match);\r\n }\r\n }\r\n // if (align === 'right') {\r\n match = match.trimRight();\r\n // }\r\n this._addTextLine(match);\r\n textWidth = Math.max(textWidth, matchWidth);\r\n currentHeightPx += lineHeightPx;\r\n if (!shouldWrap ||\r\n (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx)) {\r\n /*\r\n * stop wrapping if wrapping is disabled or if adding\r\n * one more line would overflow the fixed height\r\n */\r\n break;\r\n }\r\n line = line.slice(low);\r\n line = line.trimLeft();\r\n if (line.length > 0) {\r\n // Check if the remaining text would fit on one line\r\n lineWidth = this._getTextWidth(line);\r\n if (lineWidth <= maxWidth) {\r\n // if it does, add the line and break out of the loop\r\n this._addTextLine(line);\r\n currentHeightPx += lineHeightPx;\r\n textWidth = Math.max(textWidth, lineWidth);\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n // not even one character could fit in the element, abort\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n // element width is automatically adjusted to max line width\r\n this._addTextLine(line);\r\n currentHeightPx += lineHeightPx;\r\n textWidth = Math.max(textWidth, lineWidth);\r\n }\r\n // if element height is fixed, abort if adding one more line would overflow\r\n if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\r\n break;\r\n }\r\n }\r\n this.textHeight = fontSize;\r\n // var maxTextWidth = 0;\r\n // for(var j = 0; j < this.textArr.length; j++) {\r\n // maxTextWidth = Math.max(maxTextWidth, this.textArr[j].width);\r\n // }\r\n this.textWidth = textWidth;\r\n };\r\n // for text we can't disable stroke scaling\r\n // if we do, the result will be unexpected\r\n Text.prototype.getStrokeScaleEnabled = function () {\r\n return true;\r\n };\r\n return Text;\r\n }(Shape));\r\n Text.prototype._fillFunc = _fillFunc$1;\r\n Text.prototype._strokeFunc = _strokeFunc$1;\r\n Text.prototype.className = TEXT_UPPER;\r\n Text.prototype._attrsAffectingSize = [\r\n 'text',\r\n 'fontSize',\r\n 'padding',\r\n 'wrap',\r\n 'lineHeight',\r\n ];\r\n _registerNode(Text);\r\n /**\r\n * get/set width of text area, which includes padding.\r\n * @name Konva.Text#width\r\n * @method\r\n * @param {Number} width\r\n * @returns {Number}\r\n * @example\r\n * // get width\r\n * var width = text.width();\r\n *\r\n * // set width\r\n * text.width(20);\r\n *\r\n * // set to auto\r\n * text.width('auto');\r\n * text.width() // will return calculated width, and not \"auto\"\r\n */\r\n Factory.overWriteSetter(Text, 'width', getNumberOrAutoValidator());\r\n /**\r\n * get/set the height of the text area, which takes into account multi-line text, line heights, and padding.\r\n * @name Konva.Text#height\r\n * @method\r\n * @param {Number} height\r\n * @returns {Number}\r\n * @example\r\n * // get height\r\n * var height = text.height();\r\n *\r\n * // set height\r\n * text.height(20);\r\n *\r\n * // set to auto\r\n * text.height('auto');\r\n * text.height() // will return calculated height, and not \"auto\"\r\n */\r\n Factory.overWriteSetter(Text, 'height', getNumberOrAutoValidator());\r\n /**\r\n * get/set font family\r\n * @name Konva.Text#fontFamily\r\n * @method\r\n * @param {String} fontFamily\r\n * @returns {String}\r\n * @example\r\n * // get font family\r\n * var fontFamily = text.fontFamily();\r\n *\r\n * // set font family\r\n * text.fontFamily('Arial');\r\n */\r\n Factory.addGetterSetter(Text, 'fontFamily', 'Arial');\r\n /**\r\n * get/set font size in pixels\r\n * @name Konva.Text#fontSize\r\n * @method\r\n * @param {Number} fontSize\r\n * @returns {Number}\r\n * @example\r\n * // get font size\r\n * var fontSize = text.fontSize();\r\n *\r\n * // set font size to 22px\r\n * text.fontSize(22);\r\n */\r\n Factory.addGetterSetter(Text, 'fontSize', 12, getNumberValidator());\r\n /**\r\n * get/set font style. Can be 'normal', 'italic', or 'bold'. 'normal' is the default.\r\n * @name Konva.Text#fontStyle\r\n * @method\r\n * @param {String} fontStyle\r\n * @returns {String}\r\n * @example\r\n * // get font style\r\n * var fontStyle = text.fontStyle();\r\n *\r\n * // set font style\r\n * text.fontStyle('bold');\r\n */\r\n Factory.addGetterSetter(Text, 'fontStyle', NORMAL);\r\n /**\r\n * get/set font variant. Can be 'normal' or 'small-caps'. 'normal' is the default.\r\n * @name Konva.Text#fontVariant\r\n * @method\r\n * @param {String} fontVariant\r\n * @returns {String}\r\n * @example\r\n * // get font variant\r\n * var fontVariant = text.fontVariant();\r\n *\r\n * // set font variant\r\n * text.fontVariant('small-caps');\r\n */\r\n Factory.addGetterSetter(Text, 'fontVariant', NORMAL);\r\n /**\r\n * get/set padding\r\n * @name Konva.Text#padding\r\n * @method\r\n * @param {Number} padding\r\n * @returns {Number}\r\n * @example\r\n * // get padding\r\n * var padding = text.padding();\r\n *\r\n * // set padding to 10 pixels\r\n * text.padding(10);\r\n */\r\n Factory.addGetterSetter(Text, 'padding', 0, getNumberValidator());\r\n /**\r\n * get/set horizontal align of text. Can be 'left', 'center', 'right' or 'justify'\r\n * @name Konva.Text#align\r\n * @method\r\n * @param {String} align\r\n * @returns {String}\r\n * @example\r\n * // get text align\r\n * var align = text.align();\r\n *\r\n * // center text\r\n * text.align('center');\r\n *\r\n * // align text to right\r\n * text.align('right');\r\n */\r\n Factory.addGetterSetter(Text, 'align', LEFT$1);\r\n /**\r\n * get/set vertical align of text. Can be 'top', 'middle', 'bottom'.\r\n * @name Konva.Text#verticalAlign\r\n * @method\r\n * @param {String} verticalAlign\r\n * @returns {String}\r\n * @example\r\n * // get text vertical align\r\n * var verticalAlign = text.verticalAlign();\r\n *\r\n * // center text\r\n * text.verticalAlign('middle');\r\n */\r\n Factory.addGetterSetter(Text, 'verticalAlign', TOP);\r\n /**\r\n * get/set line height. The default is 1.\r\n * @name Konva.Text#lineHeight\r\n * @method\r\n * @param {Number} lineHeight\r\n * @returns {Number}\r\n * @example\r\n * // get line height\r\n * var lineHeight = text.lineHeight();\r\n *\r\n * // set the line height\r\n * text.lineHeight(2);\r\n */\r\n Factory.addGetterSetter(Text, 'lineHeight', 1, getNumberValidator());\r\n /**\r\n * get/set wrap. Can be \"word\", \"char\", or \"none\". Default is \"word\".\r\n * In \"word\" wrapping any word still can be wrapped if it can't be placed in the required width\r\n * without breaks.\r\n * @name Konva.Text#wrap\r\n * @method\r\n * @param {String} wrap\r\n * @returns {String}\r\n * @example\r\n * // get wrap\r\n * var wrap = text.wrap();\r\n *\r\n * // set wrap\r\n * text.wrap('word');\r\n */\r\n Factory.addGetterSetter(Text, 'wrap', WORD);\r\n /**\r\n * get/set ellipsis. Can be true or false. Default is false.\r\n * if Konva.Text config is set to wrap=\"none\" and ellipsis=true, then it will add \"...\" to the end\r\n * @name Konva.Text#ellipsis\r\n * @method\r\n * @param {Boolean} ellipsis\r\n * @returns {Boolean}\r\n * @example\r\n * // get ellipsis\r\n * var ellipsis = text.ellipsis();\r\n *\r\n * // set ellipsis\r\n * text.ellipsis(true);\r\n */\r\n Factory.addGetterSetter(Text, 'ellipsis', false);\r\n /**\r\n * set letter spacing property. Default value is 0.\r\n * @name Konva.Text#letterSpacing\r\n * @method\r\n * @param {Number} letterSpacing\r\n */\r\n Factory.addGetterSetter(Text, 'letterSpacing', 0, getNumberValidator());\r\n /**\r\n * get/set text\r\n * @name Konva.Text#text\r\n * @method\r\n * @param {String} text\r\n * @returns {String}\r\n * @example\r\n * // get text\r\n * var text = text.text();\r\n *\r\n * // set text\r\n * text.text('Hello world!');\r\n */\r\n Factory.addGetterSetter(Text, 'text', '', getStringValidator());\r\n /**\r\n * get/set text decoration of a text. Possible values are 'underline', 'line-through' or combination of these values separated by space\r\n * @name Konva.Text#textDecoration\r\n * @method\r\n * @param {String} textDecoration\r\n * @returns {String}\r\n * @example\r\n * // get text decoration\r\n * var textDecoration = text.textDecoration();\r\n *\r\n * // underline text\r\n * text.textDecoration('underline');\r\n *\r\n * // strike text\r\n * text.textDecoration('line-through');\r\n *\r\n * // underline and strike text\r\n * text.textDecoration('underline line-through');\r\n */\r\n Factory.addGetterSetter(Text, 'textDecoration', '');\r\n Collection.mapMethods(Text);\n\n var EMPTY_STRING$2 = '', NORMAL$1 = 'normal';\r\n function _fillFunc$2(context) {\r\n context.fillText(this.partialText, 0, 0);\r\n }\r\n function _strokeFunc$2(context) {\r\n context.strokeText(this.partialText, 0, 0);\r\n }\r\n /**\r\n * Path constructor.\r\n * @author Jason Follas\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {String} [config.fontFamily] default is Calibri\r\n * @param {Number} [config.fontSize] default is 12\r\n * @param {String} [config.fontStyle] can be normal, bold, or italic. Default is normal\r\n * @param {String} [config.fontVariant] can be normal or small-caps. Default is normal\r\n * @param {String} [config.textBaseline] Can be 'top', 'bottom', 'middle', 'alphabetic', 'hanging'. Default is middle\r\n * @param {String} config.text\r\n * @param {String} config.data SVG data string\r\n * @param {Function} config.getKerning a getter for kerning values for the specified characters\r\n * @param {Function} config.kerningFunc a getter for kerning values for the specified characters\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * var kerningPairs = {\r\n * 'A': {\r\n * ' ': -0.05517578125,\r\n * 'T': -0.07421875,\r\n * 'V': -0.07421875\r\n * }\r\n * 'V': {\r\n * ',': -0.091796875,\r\n * \":\": -0.037109375,\r\n * \";\": -0.037109375,\r\n * \"A\": -0.07421875\r\n * }\r\n * }\r\n * var textpath = new Konva.TextPath({\r\n * x: 100,\r\n * y: 50,\r\n * fill: '#333',\r\n * fontSize: '24',\r\n * fontFamily: 'Arial',\r\n * text: 'All the world\\'s a stage, and all the men and women merely players.',\r\n * data: 'M10,10 C0,0 10,150 100,100 S300,150 400,50',\r\n * kerningFunc(leftChar, rightChar) {\r\n * return kerningPairs.hasOwnProperty(leftChar) ? pairs[leftChar][rightChar] || 0 : 0\r\n * }\r\n * });\r\n */\r\n var TextPath = /** @class */ (function (_super) {\r\n __extends(TextPath, _super);\r\n function TextPath(config) {\r\n var _this = \r\n // call super constructor\r\n _super.call(this, config) || this;\r\n _this.dummyCanvas = Util.createCanvasElement();\r\n _this.dataArray = [];\r\n _this.dataArray = Path.parsePathData(_this.attrs.data);\r\n _this.on('dataChange.konva', function () {\r\n this.dataArray = Path.parsePathData(this.attrs.data);\r\n this._setTextData();\r\n });\r\n // update text data for certain attr changes\r\n _this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva', _this._setTextData);\r\n if (config && config['getKerning']) {\r\n Util.warn('getKerning TextPath API is deprecated. Please use \"kerningFunc\" instead.');\r\n _this.kerningFunc(config['getKerning']);\r\n }\r\n _this._setTextData();\r\n return _this;\r\n }\r\n TextPath.prototype._sceneFunc = function (context) {\r\n context.setAttr('font', this._getContextFont());\r\n context.setAttr('textBaseline', this.textBaseline());\r\n context.setAttr('textAlign', 'left');\r\n context.save();\r\n var textDecoration = this.textDecoration();\r\n var fill = this.fill();\r\n var fontSize = this.fontSize();\r\n var glyphInfo = this.glyphInfo;\r\n if (textDecoration === 'underline') {\r\n context.beginPath();\r\n }\r\n for (var i = 0; i < glyphInfo.length; i++) {\r\n context.save();\r\n var p0 = glyphInfo[i].p0;\r\n context.translate(p0.x, p0.y);\r\n context.rotate(glyphInfo[i].rotation);\r\n this.partialText = glyphInfo[i].text;\r\n context.fillStrokeShape(this);\r\n if (textDecoration === 'underline') {\r\n if (i === 0) {\r\n context.moveTo(0, fontSize / 2 + 1);\r\n }\r\n context.lineTo(fontSize, fontSize / 2 + 1);\r\n }\r\n context.restore();\r\n //// To assist with debugging visually, uncomment following\r\n //\r\n // if (i % 2) context.strokeStyle = 'cyan';\r\n // else context.strokeStyle = 'green';\r\n // var p1 = glyphInfo[i].p1;\r\n // context.moveTo(p0.x, p0.y);\r\n // context.lineTo(p1.x, p1.y);\r\n // context.stroke();\r\n }\r\n if (textDecoration === 'underline') {\r\n context.strokeStyle = fill;\r\n context.lineWidth = fontSize / 20;\r\n context.stroke();\r\n }\r\n context.restore();\r\n };\r\n TextPath.prototype._hitFunc = function (context) {\r\n context.beginPath();\r\n var glyphInfo = this.glyphInfo;\r\n if (glyphInfo.length >= 1) {\r\n var p0 = glyphInfo[0].p0;\r\n context.moveTo(p0.x, p0.y);\r\n }\r\n for (var i = 0; i < glyphInfo.length; i++) {\r\n var p1 = glyphInfo[i].p1;\r\n context.lineTo(p1.x, p1.y);\r\n }\r\n context.setAttr('lineWidth', this.fontSize());\r\n context.setAttr('strokeStyle', this.colorKey);\r\n context.stroke();\r\n };\r\n /**\r\n * get text width in pixels\r\n * @method\r\n * @name Konva.TextPath#getTextWidth\r\n */\r\n TextPath.prototype.getTextWidth = function () {\r\n return this.textWidth;\r\n };\r\n TextPath.prototype.getTextHeight = function () {\r\n Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\r\n return this.textHeight;\r\n };\r\n TextPath.prototype.setText = function (text) {\r\n return Text.prototype.setText.call(this, text);\r\n };\r\n TextPath.prototype._getContextFont = function () {\r\n return Text.prototype._getContextFont.call(this);\r\n };\r\n TextPath.prototype._getTextSize = function (text) {\r\n var dummyCanvas = this.dummyCanvas;\r\n var _context = dummyCanvas.getContext('2d');\r\n _context.save();\r\n _context.font = this._getContextFont();\r\n var metrics = _context.measureText(text);\r\n _context.restore();\r\n return {\r\n width: metrics.width,\r\n height: parseInt(this.attrs.fontSize, 10)\r\n };\r\n };\r\n TextPath.prototype._setTextData = function () {\r\n var that = this;\r\n var size = this._getTextSize(this.attrs.text);\r\n var letterSpacing = this.letterSpacing();\r\n var align = this.align();\r\n var kerningFunc = this.kerningFunc();\r\n this.textWidth = size.width;\r\n this.textHeight = size.height;\r\n var textFullWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\r\n this.glyphInfo = [];\r\n var fullPathWidth = 0;\r\n for (var l = 0; l < that.dataArray.length; l++) {\r\n if (that.dataArray[l].pathLength > 0) {\r\n fullPathWidth += that.dataArray[l].pathLength;\r\n }\r\n }\r\n var offset = 0;\r\n if (align === 'center') {\r\n offset = Math.max(0, fullPathWidth / 2 - textFullWidth / 2);\r\n }\r\n if (align === 'right') {\r\n offset = Math.max(0, fullPathWidth - textFullWidth);\r\n }\r\n var charArr = this.text().split('');\r\n var spacesNumber = this.text().split(' ').length - 1;\r\n var p0, p1, pathCmd;\r\n var pIndex = -1;\r\n var currentT = 0;\r\n // var sumLength = 0;\r\n // for(var j = 0; j < that.dataArray.length; j++) {\r\n // if(that.dataArray[j].pathLength > 0) {\r\n //\r\n // if (sumLength + that.dataArray[j].pathLength > offset) {}\r\n // fullPathWidth += that.dataArray[j].pathLength;\r\n // }\r\n // }\r\n var getNextPathSegment = function () {\r\n currentT = 0;\r\n var pathData = that.dataArray;\r\n for (var j = pIndex + 1; j < pathData.length; j++) {\r\n if (pathData[j].pathLength > 0) {\r\n pIndex = j;\r\n return pathData[j];\r\n }\r\n else if (pathData[j].command === 'M') {\r\n p0 = {\r\n x: pathData[j].points[0],\r\n y: pathData[j].points[1]\r\n };\r\n }\r\n }\r\n return {};\r\n };\r\n var findSegmentToFitCharacter = function (c) {\r\n var glyphWidth = that._getTextSize(c).width + letterSpacing;\r\n if (c === ' ' && align === 'justify') {\r\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\r\n }\r\n var currLen = 0;\r\n var attempts = 0;\r\n p1 = undefined;\r\n while (Math.abs(glyphWidth - currLen) / glyphWidth > 0.01 &&\r\n attempts < 25) {\r\n attempts++;\r\n var cumulativePathLength = currLen;\r\n while (pathCmd === undefined) {\r\n pathCmd = getNextPathSegment();\r\n if (pathCmd &&\r\n cumulativePathLength + pathCmd.pathLength < glyphWidth) {\r\n cumulativePathLength += pathCmd.pathLength;\r\n pathCmd = undefined;\r\n }\r\n }\r\n if (pathCmd === {} || p0 === undefined) {\r\n return undefined;\r\n }\r\n var needNewSegment = false;\r\n switch (pathCmd.command) {\r\n case 'L':\r\n if (Path.getLineLength(p0.x, p0.y, pathCmd.points[0], pathCmd.points[1]) > glyphWidth) {\r\n p1 = Path.getPointOnLine(glyphWidth, p0.x, p0.y, pathCmd.points[0], pathCmd.points[1], p0.x, p0.y);\r\n }\r\n else {\r\n pathCmd = undefined;\r\n }\r\n break;\r\n case 'A':\r\n var start = pathCmd.points[4];\r\n // 4 = theta\r\n var dTheta = pathCmd.points[5];\r\n // 5 = dTheta\r\n var end = pathCmd.points[4] + dTheta;\r\n if (currentT === 0) {\r\n currentT = start + 0.00000001;\r\n }\r\n else if (glyphWidth > currLen) {\r\n // Just in case start is 0\r\n currentT += ((Math.PI / 180.0) * dTheta) / Math.abs(dTheta);\r\n }\r\n else {\r\n currentT -= ((Math.PI / 360.0) * dTheta) / Math.abs(dTheta);\r\n }\r\n // Credit for bug fix: @therth https://github.com/ericdrowell/KonvaJS/issues/249\r\n // Old code failed to render text along arc of this path: \"M 50 50 a 150 50 0 0 1 250 50 l 50 0\"\r\n if ((dTheta < 0 && currentT < end) ||\r\n (dTheta >= 0 && currentT > end)) {\r\n currentT = end;\r\n needNewSegment = true;\r\n }\r\n p1 = Path.getPointOnEllipticalArc(pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], currentT, pathCmd.points[6]);\r\n break;\r\n case 'C':\r\n if (currentT === 0) {\r\n if (glyphWidth > pathCmd.pathLength) {\r\n currentT = 0.00000001;\r\n }\r\n else {\r\n currentT = glyphWidth / pathCmd.pathLength;\r\n }\r\n }\r\n else if (glyphWidth > currLen) {\r\n currentT += (glyphWidth - currLen) / pathCmd.pathLength;\r\n }\r\n else {\r\n currentT -= (currLen - glyphWidth) / pathCmd.pathLength;\r\n }\r\n if (currentT > 1.0) {\r\n currentT = 1.0;\r\n needNewSegment = true;\r\n }\r\n p1 = Path.getPointOnCubicBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3], pathCmd.points[4], pathCmd.points[5]);\r\n break;\r\n case 'Q':\r\n if (currentT === 0) {\r\n currentT = glyphWidth / pathCmd.pathLength;\r\n }\r\n else if (glyphWidth > currLen) {\r\n currentT += (glyphWidth - currLen) / pathCmd.pathLength;\r\n }\r\n else {\r\n currentT -= (currLen - glyphWidth) / pathCmd.pathLength;\r\n }\r\n if (currentT > 1.0) {\r\n currentT = 1.0;\r\n needNewSegment = true;\r\n }\r\n p1 = Path.getPointOnQuadraticBezier(currentT, pathCmd.start.x, pathCmd.start.y, pathCmd.points[0], pathCmd.points[1], pathCmd.points[2], pathCmd.points[3]);\r\n break;\r\n }\r\n if (p1 !== undefined) {\r\n currLen = Path.getLineLength(p0.x, p0.y, p1.x, p1.y);\r\n }\r\n if (needNewSegment) {\r\n needNewSegment = false;\r\n pathCmd = undefined;\r\n }\r\n }\r\n };\r\n // fake search for offset, this is the best approach\r\n var testChar = 'C';\r\n var glyphWidth = that._getTextSize(testChar).width + letterSpacing;\r\n var lettersInOffset = offset / glyphWidth - 1;\r\n // the idea is simple\r\n // try to draw testChar until we fill offset\r\n for (var k = 0; k < lettersInOffset; k++) {\r\n findSegmentToFitCharacter(testChar);\r\n if (p0 === undefined || p1 === undefined) {\r\n break;\r\n }\r\n p0 = p1;\r\n }\r\n for (var i = 0; i < charArr.length; i++) {\r\n // Find p1 such that line segment between p0 and p1 is approx. width of glyph\r\n findSegmentToFitCharacter(charArr[i]);\r\n if (p0 === undefined || p1 === undefined) {\r\n break;\r\n }\r\n var width = Path.getLineLength(p0.x, p0.y, p1.x, p1.y);\r\n var kern = 0;\r\n if (kerningFunc) {\r\n try {\r\n // getKerning is a user provided getter. Make sure it never breaks our logic\r\n kern = kerningFunc(charArr[i - 1], charArr[i]) * this.fontSize();\r\n }\r\n catch (e) {\r\n kern = 0;\r\n }\r\n }\r\n p0.x += kern;\r\n p1.x += kern;\r\n this.textWidth += kern;\r\n var midpoint = Path.getPointOnLine(kern + width / 2.0, p0.x, p0.y, p1.x, p1.y);\r\n var rotation = Math.atan2(p1.y - p0.y, p1.x - p0.x);\r\n this.glyphInfo.push({\r\n transposeX: midpoint.x,\r\n transposeY: midpoint.y,\r\n text: charArr[i],\r\n rotation: rotation,\r\n p0: p0,\r\n p1: p1\r\n });\r\n p0 = p1;\r\n }\r\n };\r\n TextPath.prototype.getSelfRect = function () {\r\n if (!this.glyphInfo.length) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n var points = [];\r\n this.glyphInfo.forEach(function (info) {\r\n points.push(info.p0.x);\r\n points.push(info.p0.y);\r\n points.push(info.p1.x);\r\n points.push(info.p1.y);\r\n });\r\n var minX = points[0] || 0;\r\n var maxX = points[0] || 0;\r\n var minY = points[1] || 0;\r\n var maxY = points[1] || 0;\r\n var x, y;\r\n for (var i = 0; i < points.length / 2; i++) {\r\n x = points[i * 2];\r\n y = points[i * 2 + 1];\r\n minX = Math.min(minX, x);\r\n maxX = Math.max(maxX, x);\r\n minY = Math.min(minY, y);\r\n maxY = Math.max(maxY, y);\r\n }\r\n var fontSize = this.fontSize();\r\n return {\r\n x: minX - fontSize / 2,\r\n y: minY - fontSize / 2,\r\n width: maxX - minX + fontSize,\r\n height: maxY - minY + fontSize\r\n };\r\n };\r\n return TextPath;\r\n }(Shape));\r\n TextPath.prototype._fillFunc = _fillFunc$2;\r\n TextPath.prototype._strokeFunc = _strokeFunc$2;\r\n TextPath.prototype._fillFuncHit = _fillFunc$2;\r\n TextPath.prototype._strokeFuncHit = _strokeFunc$2;\r\n TextPath.prototype.className = 'TextPath';\r\n TextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\r\n _registerNode(TextPath);\r\n /**\r\n * get/set SVG path data string. This method\r\n * also automatically parses the data string\r\n * into a data array. Currently supported SVG data:\r\n * M, m, L, l, H, h, V, v, Q, q, T, t, C, c, S, s, A, a, Z, z\r\n * @name Konva.TextPath#data\r\n * @method\r\n * @param {String} data svg path string\r\n * @returns {String}\r\n * @example\r\n * // get data\r\n * var data = shape.data();\r\n *\r\n * // set data\r\n * shape.data('M200,100h100v50z');\r\n */\r\n Factory.addGetterSetter(TextPath, 'data');\r\n /**\r\n * get/set font family\r\n * @name Konva.TextPath#fontFamily\r\n * @method\r\n * @param {String} fontFamily\r\n * @returns {String}\r\n * @example\r\n * // get font family\r\n * var fontFamily = shape.fontFamily();\r\n *\r\n * // set font family\r\n * shape.fontFamily('Arial');\r\n */\r\n Factory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\r\n /**\r\n * get/set font size in pixels\r\n * @name Konva.TextPath#fontSize\r\n * @method\r\n * @param {Number} fontSize\r\n * @returns {Number}\r\n * @example\r\n * // get font size\r\n * var fontSize = shape.fontSize();\r\n *\r\n * // set font size to 22px\r\n * shape.fontSize(22);\r\n */\r\n Factory.addGetterSetter(TextPath, 'fontSize', 12, getNumberValidator());\r\n /**\r\n * get/set font style. Can be 'normal', 'italic', or 'bold'. 'normal' is the default.\r\n * @name Konva.TextPath#fontStyle\r\n * @method\r\n * @param {String} fontStyle\r\n * @returns {String}\r\n * @example\r\n * // get font style\r\n * var fontStyle = shape.fontStyle();\r\n *\r\n * // set font style\r\n * shape.fontStyle('bold');\r\n */\r\n Factory.addGetterSetter(TextPath, 'fontStyle', NORMAL$1);\r\n /**\r\n * get/set horizontal align of text. Can be 'left', 'center', 'right' or 'justify'\r\n * @name Konva.Text#align\r\n * @method\r\n * @param {String} align\r\n * @returns {String}\r\n * @example\r\n * // get text align\r\n * var align = text.align();\r\n *\r\n * // center text\r\n * text.align('center');\r\n *\r\n * // align text to right\r\n * text.align('right');\r\n */\r\n Factory.addGetterSetter(TextPath, 'align', 'left');\r\n /**\r\n * get/set letter spacing. The default is 0.\r\n * @name Konva.TextPath#letterSpacing\r\n * @method\r\n * @param {Number} letterSpacing\r\n * @returns {Number}\r\n * @example\r\n * // get line height\r\n * var letterSpacing = shape.letterSpacing();\r\n *\r\n * // set the line height\r\n * shape.letterSpacing(2);\r\n */\r\n Factory.addGetterSetter(TextPath, 'letterSpacing', 0, getNumberValidator());\r\n /**\r\n * get/set text baseline. The default is 'middle'. Can be 'top', 'bottom', 'middle', 'alphabetic', 'hanging'\r\n * @name Konva.TextPath#textBaseline\r\n * @method\r\n * @param {String} textBaseline\r\n * @returns {String}\r\n * @example\r\n * // get line height\r\n * var textBaseline = shape.textBaseline();\r\n *\r\n * // set the line height\r\n * shape.textBaseline('top');\r\n */\r\n Factory.addGetterSetter(TextPath, 'textBaseline', 'middle');\r\n /**\r\n * get/set font variant. Can be 'normal' or 'small-caps'. 'normal' is the default.\r\n * @name Konva.TextPath#fontVariant\r\n * @method\r\n * @param {String} fontVariant\r\n * @returns {String}\r\n * @example\r\n * // get font variant\r\n * var fontVariant = shape.fontVariant();\r\n *\r\n * // set font variant\r\n * shape.fontVariant('small-caps');\r\n */\r\n Factory.addGetterSetter(TextPath, 'fontVariant', NORMAL$1);\r\n /**\r\n * get/set text\r\n * @name Konva.TextPath#getText\r\n * @method\r\n * @param {String} text\r\n * @returns {String}\r\n * @example\r\n * // get text\r\n * var text = text.text();\r\n *\r\n * // set text\r\n * text.text('Hello world!');\r\n */\r\n Factory.addGetterSetter(TextPath, 'text', EMPTY_STRING$2);\r\n /**\r\n * get/set text decoration of a text. Can be '' or 'underline'.\r\n * @name Konva.TextPath#textDecoration\r\n * @method\r\n * @param {String} textDecoration\r\n * @returns {String}\r\n * @example\r\n * // get text decoration\r\n * var textDecoration = shape.textDecoration();\r\n *\r\n * // underline text\r\n * shape.textDecoration('underline');\r\n */\r\n Factory.addGetterSetter(TextPath, 'textDecoration', null);\r\n /**\r\n * get/set kerning function.\r\n * @name Konva.TextPath#kerningFunc\r\n * @method\r\n * @param {String} kerningFunc\r\n * @returns {String}\r\n * @example\r\n * // get text decoration\r\n * var kerningFunc = text.kerningFunc();\r\n *\r\n * // center text\r\n * text.kerningFunc(function(leftChar, rightChar) {\r\n * return 1;\r\n * });\r\n */\r\n Factory.addGetterSetter(TextPath, 'kerningFunc', null);\r\n Collection.mapMethods(TextPath);\n\n var EVENTS_NAME = 'tr-konva';\r\n var ATTR_CHANGE_LIST$2 = [\r\n 'resizeEnabledChange',\r\n 'rotateAnchorOffsetChange',\r\n 'rotateEnabledChange',\r\n 'enabledAnchorsChange',\r\n 'anchorSizeChange',\r\n 'borderEnabledChange',\r\n 'borderStrokeChange',\r\n 'borderStrokeWidthChange',\r\n 'borderDashChange',\r\n 'anchorStrokeChange',\r\n 'anchorStrokeWidthChange',\r\n 'anchorFillChange',\r\n 'anchorCornerRadiusChange',\r\n 'ignoreStrokeChange',\r\n ]\r\n .map(function (e) { return e + (\".\" + EVENTS_NAME); })\r\n .join(' ');\r\n var NODES_RECT = 'nodesRect';\r\n var TRANSFORM_CHANGE_STR$1 = [\r\n 'widthChange',\r\n 'heightChange',\r\n 'scaleXChange',\r\n 'scaleYChange',\r\n 'skewXChange',\r\n 'skewYChange',\r\n 'rotationChange',\r\n 'offsetXChange',\r\n 'offsetYChange',\r\n 'transformsEnabledChange',\r\n 'strokeWidthChange',\r\n ]\r\n .map(function (e) { return e + (\".\" + EVENTS_NAME); })\r\n .join(' ');\r\n var ANGLES = {\r\n 'top-left': -45,\r\n 'top-center': 0,\r\n 'top-right': 45,\r\n 'middle-right': -90,\r\n 'middle-left': 90,\r\n 'bottom-left': -135,\r\n 'bottom-center': 180,\r\n 'bottom-right': 135,\r\n };\r\n var TOUCH_DEVICE = 'ontouchstart' in Konva._global;\r\n function getCursor(anchorName, rad) {\r\n if (anchorName === 'rotater') {\r\n return 'crosshair';\r\n }\r\n rad += Util._degToRad(ANGLES[anchorName] || 0);\r\n var angle = ((Util._radToDeg(rad) % 360) + 360) % 360;\r\n if (Util._inRange(angle, 315 + 22.5, 360) || Util._inRange(angle, 0, 22.5)) {\r\n // TOP\r\n return 'ns-resize';\r\n }\r\n else if (Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\r\n // TOP - RIGHT\r\n return 'nesw-resize';\r\n }\r\n else if (Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\r\n // RIGHT\r\n return 'ew-resize';\r\n }\r\n else if (Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\r\n // BOTTOM - RIGHT\r\n return 'nwse-resize';\r\n }\r\n else if (Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\r\n // BOTTOM\r\n return 'ns-resize';\r\n }\r\n else if (Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\r\n // BOTTOM - LEFT\r\n return 'nesw-resize';\r\n }\r\n else if (Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\r\n // RIGHT\r\n return 'ew-resize';\r\n }\r\n else if (Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\r\n // BOTTOM - RIGHT\r\n return 'nwse-resize';\r\n }\r\n else {\r\n // how can we can there?\r\n Util.error('Transformer has unknown angle for cursor detection: ' + angle);\r\n return 'pointer';\r\n }\r\n }\r\n var ANCHORS_NAMES = [\r\n 'top-left',\r\n 'top-center',\r\n 'top-right',\r\n 'middle-right',\r\n 'middle-left',\r\n 'bottom-left',\r\n 'bottom-center',\r\n 'bottom-right',\r\n ];\r\n var MAX_SAFE_INTEGER = 100000000;\r\n function getCenter(shape) {\r\n return {\r\n x: shape.x +\r\n (shape.width / 2) * Math.cos(shape.rotation) +\r\n (shape.height / 2) * Math.sin(-shape.rotation),\r\n y: shape.y +\r\n (shape.height / 2) * Math.cos(shape.rotation) +\r\n (shape.width / 2) * Math.sin(shape.rotation),\r\n };\r\n }\r\n function rotateAroundPoint(shape, angleRad, point) {\r\n var x = point.x +\r\n (shape.x - point.x) * Math.cos(angleRad) -\r\n (shape.y - point.y) * Math.sin(angleRad);\r\n var y = point.y +\r\n (shape.x - point.x) * Math.sin(angleRad) +\r\n (shape.y - point.y) * Math.cos(angleRad);\r\n return __assign(__assign({}, shape), { rotation: shape.rotation + angleRad, x: x,\r\n y: y });\r\n }\r\n function rotateAroundCenter(shape, deltaRad) {\r\n var center = getCenter(shape);\r\n return rotateAroundPoint(shape, deltaRad, center);\r\n }\r\n function getSnap(snaps, newRotationRad, tol) {\r\n var snapped = newRotationRad;\r\n for (var i = 0; i < snaps.length; i++) {\r\n var angle = Konva.getAngle(snaps[i]);\r\n var absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\r\n var dif = Math.min(absDiff, Math.PI * 2 - absDiff);\r\n if (dif < tol) {\r\n snapped = angle;\r\n }\r\n }\r\n return snapped;\r\n }\r\n /**\r\n * Transformer constructor. Transformer is a special type of group that allow you transform Konva\r\n * primitives and shapes. Transforming tool is not changing `width` and `height` properties of nodes\r\n * when you resize them. Instead it changes `scaleX` and `scaleY` properties.\r\n * @constructor\r\n * @memberof Konva\r\n * @param {Object} config\r\n * @param {Boolean} [config.resizeEnabled] Default is true\r\n * @param {Boolean} [config.rotateEnabled] Default is true\r\n * @param {Array} [config.rotationSnaps] Array of angles for rotation snaps. Default is []\r\n * @param {Number} [config.rotationSnapTolerance] Snapping tolerance. If closer than this it will snap. Default is 5\r\n * @param {Number} [config.rotateAnchorOffset] Default is 50\r\n * @param {Number} [config.padding] Default is 0\r\n * @param {Boolean} [config.borderEnabled] Should we draw border? Default is true\r\n * @param {String} [config.borderStroke] Border stroke color\r\n * @param {Number} [config.borderStrokeWidth] Border stroke size\r\n * @param {Array} [config.borderDash] Array for border dash.\r\n * @param {String} [config.anchorFill] Anchor fill color\r\n * @param {String} [config.anchorStroke] Anchor stroke color\r\n * @param {String} [config.anchorCornerRadius] Anchor corner radius\r\n * @param {Number} [config.anchorStrokeWidth] Anchor stroke size\r\n * @param {Number} [config.anchorSize] Default is 10\r\n * @param {Boolean} [config.keepRatio] Should we keep ratio when we are moving edges? Default is true\r\n * @param {Boolean} [config.centeredScaling] Should we resize relative to node's center? Default is false\r\n * @param {Array} [config.enabledAnchors] Array of names of enabled handles\r\n * @param {Function} [config.boundBoxFunc] Bounding box function\r\n * @param {Function} [config.ignoreStroke] Should we ignore stroke size? Default is false\r\n *\r\n * @example\r\n * var transformer = new Konva.Transformer({\r\n * nodes: [rectangle],\r\n * rotateAnchorOffset: 60,\r\n * enabledAnchors: ['top-left', 'top-right', 'bottom-left', 'bottom-right']\r\n * });\r\n * layer.add(transformer);\r\n */\r\n var Transformer = /** @class */ (function (_super) {\r\n __extends(Transformer, _super);\r\n function Transformer(config) {\r\n var _this = \r\n // call super constructor\r\n _super.call(this, config) || this;\r\n _this._transforming = false;\r\n _this._createElements();\r\n // bindings\r\n _this._handleMouseMove = _this._handleMouseMove.bind(_this);\r\n _this._handleMouseUp = _this._handleMouseUp.bind(_this);\r\n _this.update = _this.update.bind(_this);\r\n // update transformer data for certain attr changes\r\n _this.on(ATTR_CHANGE_LIST$2, _this.update);\r\n if (_this.getNode()) {\r\n _this.update();\r\n }\r\n return _this;\r\n }\r\n /**\r\n * alias to `tr.nodes([shape])`/ This method is deprecated and will be removed soon.\r\n * @method\r\n * @name Konva.Transformer#attachTo\r\n * @returns {Konva.Transformer}\r\n * @example\r\n * transformer.attachTo(shape);\r\n */\r\n Transformer.prototype.attachTo = function (node) {\r\n this.setNode(node);\r\n return this;\r\n };\r\n Transformer.prototype.setNode = function (node) {\r\n Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\r\n return this.setNodes([node]);\r\n };\r\n Transformer.prototype.getNode = function () {\r\n return this._nodes && this._nodes[0];\r\n };\r\n Transformer.prototype.setNodes = function (nodes) {\r\n var _this = this;\r\n if (nodes === void 0) { nodes = []; }\r\n if (this._nodes && this._nodes.length) {\r\n this.detach();\r\n }\r\n this._nodes = nodes;\r\n if (nodes.length === 1) {\r\n this.rotation(nodes[0].rotation());\r\n }\r\n else {\r\n this.rotation(0);\r\n }\r\n this._nodes.forEach(function (node) {\r\n var additionalEvents = node._attrsAffectingSize\r\n .map(function (prop) { return prop + 'Change.' + EVENTS_NAME; })\r\n .join(' ');\r\n var onChange = function () {\r\n _this._resetTransformCache();\r\n if (!_this._transforming) {\r\n _this.update();\r\n }\r\n };\r\n node.on(additionalEvents, onChange);\r\n node.on(TRANSFORM_CHANGE_STR$1, onChange);\r\n node.on(\"_clearTransformCache.\" + EVENTS_NAME, onChange);\r\n node.on(\"xChange.\" + EVENTS_NAME + \" yChange.\" + EVENTS_NAME, onChange);\r\n _this._proxyDrag(node);\r\n });\r\n this._resetTransformCache();\r\n // we may need it if we set node in initial props\r\n // so elements are not defined yet\r\n var elementsCreated = !!this.findOne('.top-left');\r\n if (elementsCreated) {\r\n this.update();\r\n }\r\n return this;\r\n };\r\n Transformer.prototype._proxyDrag = function (node) {\r\n var _this = this;\r\n var lastPos;\r\n node.on(\"dragstart.\" + EVENTS_NAME, function (e) {\r\n lastPos = node.getAbsolutePosition();\r\n // actual dragging of Transformer doesn't make sense\r\n // but we need to proxy drag events\r\n if (!_this.isDragging() && node !== _this.findOne('.back')) {\r\n _this.startDrag();\r\n }\r\n });\r\n node.on(\"dragmove.\" + EVENTS_NAME, function (e) {\r\n if (!lastPos) {\r\n return;\r\n }\r\n var abs = node.getAbsolutePosition();\r\n var dx = abs.x - lastPos.x;\r\n var dy = abs.y - lastPos.y;\r\n _this.nodes().forEach(function (otherNode) {\r\n if (otherNode === node) {\r\n return;\r\n }\r\n if (otherNode.isDragging()) {\r\n return;\r\n }\r\n var otherAbs = otherNode.getAbsolutePosition();\r\n otherNode.setAbsolutePosition({\r\n x: otherAbs.x + dx,\r\n y: otherAbs.y + dy,\r\n });\r\n otherNode.startDrag();\r\n });\r\n lastPos = null;\r\n });\r\n };\r\n Transformer.prototype.getNodes = function () {\r\n return this._nodes;\r\n };\r\n /**\r\n * return the name of current active anchor\r\n * @method\r\n * @name Konva.Transformer#getActiveAnchor\r\n * @returns {String | Null}\r\n * @example\r\n * transformer.getActiveAnchor();\r\n */\r\n Transformer.prototype.getActiveAnchor = function () {\r\n return this._movingAnchorName;\r\n };\r\n /**\r\n * detach transformer from an attached node\r\n * @method\r\n * @name Konva.Transformer#detach\r\n * @returns {Konva.Transformer}\r\n * @example\r\n * transformer.detach();\r\n */\r\n Transformer.prototype.detach = function () {\r\n // remove events\r\n if (this._nodes) {\r\n this._nodes.forEach(function (node) {\r\n node.off('.' + EVENTS_NAME);\r\n });\r\n }\r\n this._nodes = [];\r\n this._resetTransformCache();\r\n };\r\n Transformer.prototype._resetTransformCache = function () {\r\n this._clearCache(NODES_RECT);\r\n this._clearCache('transform');\r\n this._clearSelfAndDescendantCache('absoluteTransform');\r\n };\r\n Transformer.prototype._getNodeRect = function () {\r\n return this._getCache(NODES_RECT, this.__getNodeRect);\r\n };\r\n // return absolute rotated bounding rectangle\r\n Transformer.prototype.__getNodeShape = function (node, rot, relative) {\r\n if (rot === void 0) { rot = this.rotation(); }\r\n var rect = node.getClientRect({\r\n skipTransform: true,\r\n skipShadow: true,\r\n skipStroke: this.ignoreStroke(),\r\n });\r\n var absScale = node.getAbsoluteScale(relative);\r\n var absPos = node.getAbsolutePosition(relative);\r\n var dx = rect.x * absScale.x - node.offsetX() * absScale.x;\r\n var dy = rect.y * absScale.y - node.offsetY() * absScale.y;\r\n var rotation = (Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\r\n (Math.PI * 2);\r\n var box = {\r\n x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\r\n y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\r\n width: rect.width * absScale.x,\r\n height: rect.height * absScale.y,\r\n rotation: rotation,\r\n };\r\n return rotateAroundPoint(box, -Konva.getAngle(rot), {\r\n x: 0,\r\n y: 0,\r\n });\r\n };\r\n // returns box + rotation of all shapes\r\n Transformer.prototype.__getNodeRect = function () {\r\n var _this = this;\r\n var node = this.getNode();\r\n if (!node) {\r\n return {\r\n x: -MAX_SAFE_INTEGER,\r\n y: -MAX_SAFE_INTEGER,\r\n width: 0,\r\n height: 0,\r\n rotation: 0,\r\n };\r\n }\r\n var totalPoints = [];\r\n this.nodes().map(function (node) {\r\n var box = node.getClientRect({\r\n skipTransform: true,\r\n skipShadow: true,\r\n skipStroke: _this.ignoreStroke(),\r\n });\r\n var points = [\r\n { x: box.x, y: box.y },\r\n { x: box.x + box.width, y: box.y },\r\n { x: box.x + box.width, y: box.y + box.height },\r\n { x: box.x, y: box.y + box.height },\r\n ];\r\n var trans = node.getAbsoluteTransform();\r\n points.forEach(function (point) {\r\n var transformed = trans.point(point);\r\n totalPoints.push(transformed);\r\n });\r\n });\r\n var tr = new Transform();\r\n tr.rotate(-Konva.getAngle(this.rotation()));\r\n var minX, minY, maxX, maxY;\r\n totalPoints.forEach(function (point) {\r\n var transformed = tr.point(point);\r\n if (minX === undefined) {\r\n minX = maxX = transformed.x;\r\n minY = maxY = transformed.y;\r\n }\r\n minX = Math.min(minX, transformed.x);\r\n minY = Math.min(minY, transformed.y);\r\n maxX = Math.max(maxX, transformed.x);\r\n maxY = Math.max(maxY, transformed.y);\r\n });\r\n tr.invert();\r\n var p = tr.point({ x: minX, y: minY });\r\n return {\r\n x: p.x,\r\n y: p.y,\r\n width: maxX - minX,\r\n height: maxY - minY,\r\n rotation: Konva.getAngle(this.rotation()),\r\n };\r\n // const shapes = this.nodes().map(node => {\r\n // return this.__getNodeShape(node);\r\n // });\r\n // const box = getShapesRect(shapes);\r\n // return rotateAroundPoint(box, Konva.getAngle(this.rotation()), {\r\n // x: 0,\r\n // y: 0\r\n // });\r\n };\r\n Transformer.prototype.getX = function () {\r\n return this._getNodeRect().x;\r\n };\r\n Transformer.prototype.getY = function () {\r\n return this._getNodeRect().y;\r\n };\r\n Transformer.prototype.getWidth = function () {\r\n return this._getNodeRect().width;\r\n };\r\n Transformer.prototype.getHeight = function () {\r\n return this._getNodeRect().height;\r\n };\r\n Transformer.prototype._createElements = function () {\r\n this._createBack();\r\n ANCHORS_NAMES.forEach(function (name) {\r\n this._createAnchor(name);\r\n }.bind(this));\r\n this._createAnchor('rotater');\r\n };\r\n Transformer.prototype._createAnchor = function (name) {\r\n var _this = this;\r\n var anchor = new Rect({\r\n stroke: 'rgb(0, 161, 255)',\r\n fill: 'white',\r\n strokeWidth: 1,\r\n name: name + ' _anchor',\r\n dragDistance: 0,\r\n // make it draggable,\r\n // so activating the anchror will not start drag&drop of any parent\r\n draggable: true,\r\n hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\r\n });\r\n var self = this;\r\n anchor.on('mousedown touchstart', function (e) {\r\n self._handleMouseDown(e);\r\n });\r\n anchor.on('dragstart', function (e) {\r\n anchor.stopDrag();\r\n e.cancelBubble = true;\r\n });\r\n anchor.on('dragend', function (e) {\r\n e.cancelBubble = true;\r\n });\r\n // add hover styling\r\n anchor.on('mouseenter', function () {\r\n var rad = Konva.getAngle(_this.rotation());\r\n var cursor = getCursor(name, rad);\r\n anchor.getStage().content.style.cursor = cursor;\r\n _this._cursorChange = true;\r\n });\r\n anchor.on('mouseout', function () {\r\n anchor.getStage().content.style.cursor = '';\r\n _this._cursorChange = false;\r\n });\r\n this.add(anchor);\r\n };\r\n Transformer.prototype._createBack = function () {\r\n var _this = this;\r\n var back = new Shape({\r\n name: 'back',\r\n width: 0,\r\n height: 0,\r\n draggable: true,\r\n sceneFunc: function (ctx) {\r\n var tr = this.getParent();\r\n var padding = tr.padding();\r\n ctx.beginPath();\r\n ctx.rect(-padding, -padding, this.width() + padding * 2, this.height() + padding * 2);\r\n ctx.moveTo(this.width() / 2, -padding);\r\n if (tr.rotateEnabled()) {\r\n ctx.lineTo(this.width() / 2, -tr.rotateAnchorOffset() * Util._sign(this.height()) - padding);\r\n }\r\n ctx.fillStrokeShape(this);\r\n },\r\n hitFunc: function (ctx, shape) {\r\n if (!_this.shouldOverdrawWholeArea()) {\r\n return;\r\n }\r\n var padding = _this.padding();\r\n ctx.beginPath();\r\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\r\n ctx.fillStrokeShape(shape);\r\n },\r\n });\r\n this.add(back);\r\n this._proxyDrag(back);\r\n };\r\n Transformer.prototype._handleMouseDown = function (e) {\r\n this._movingAnchorName = e.target.name().split(' ')[0];\r\n // var node = this.getNode();\r\n var attrs = this._getNodeRect();\r\n var width = attrs.width;\r\n var height = attrs.height;\r\n var hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\r\n this.sin = Math.abs(height / hypotenuse);\r\n this.cos = Math.abs(width / hypotenuse);\r\n window.addEventListener('mousemove', this._handleMouseMove);\r\n window.addEventListener('touchmove', this._handleMouseMove);\r\n window.addEventListener('mouseup', this._handleMouseUp, true);\r\n window.addEventListener('touchend', this._handleMouseUp, true);\r\n this._transforming = true;\r\n var ap = e.target.getAbsolutePosition();\r\n var pos = e.target.getStage().getPointerPosition();\r\n this._anchorDragOffset = {\r\n x: pos.x - ap.x,\r\n y: pos.y - ap.y,\r\n };\r\n this._fire('transformstart', { evt: e, target: this.getNode() });\r\n this.getNode()._fire('transformstart', { evt: e, target: this.getNode() });\r\n };\r\n Transformer.prototype._handleMouseMove = function (e) {\r\n var x, y, newHypotenuse;\r\n var anchorNode = this.findOne('.' + this._movingAnchorName);\r\n var stage = anchorNode.getStage();\r\n stage.setPointersPositions(e);\r\n var pp = stage.getPointerPosition();\r\n var newNodePos = {\r\n x: pp.x - this._anchorDragOffset.x,\r\n y: pp.y - this._anchorDragOffset.y,\r\n };\r\n var oldAbs = anchorNode.getAbsolutePosition();\r\n anchorNode.setAbsolutePosition(newNodePos);\r\n var newAbs = anchorNode.getAbsolutePosition();\r\n if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\r\n return;\r\n }\r\n // rotater is working very differently, so do it first\r\n if (this._movingAnchorName === 'rotater') {\r\n var attrs = this._getNodeRect();\r\n x = anchorNode.x() - attrs.width / 2;\r\n y = -anchorNode.y() + attrs.height / 2;\r\n // hor angle is changed?\r\n var delta = Math.atan2(-y, x) + Math.PI / 2;\r\n if (attrs.height < 0) {\r\n delta -= Math.PI;\r\n }\r\n var oldRotation = Konva.getAngle(this.rotation());\r\n var newRotation = oldRotation + delta;\r\n var tol = Konva.getAngle(this.rotationSnapTolerance());\r\n var snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\r\n var diff = snappedRot - attrs.rotation;\r\n var shape = rotateAroundCenter(attrs, diff);\r\n this._fitNodesInto(shape, e);\r\n return;\r\n }\r\n var keepProportion = this.keepRatio() || e.shiftKey;\r\n var centeredScaling = this.centeredScaling() || e.altKey;\r\n if (this._movingAnchorName === 'top-left') {\r\n if (keepProportion) {\r\n var comparePoint = centeredScaling\r\n ? {\r\n x: this.width() / 2,\r\n y: this.height() / 2,\r\n }\r\n : {\r\n x: this.findOne('.bottom-right').x(),\r\n y: this.findOne('.bottom-right').y(),\r\n };\r\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\r\n Math.pow(comparePoint.y - anchorNode.y(), 2));\r\n var reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\r\n var reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\r\n x = newHypotenuse * this.cos * reverseX;\r\n y = newHypotenuse * this.sin * reverseY;\r\n this.findOne('.top-left').x(comparePoint.x - x);\r\n this.findOne('.top-left').y(comparePoint.y - y);\r\n }\r\n }\r\n else if (this._movingAnchorName === 'top-center') {\r\n this.findOne('.top-left').y(anchorNode.y());\r\n }\r\n else if (this._movingAnchorName === 'top-right') {\r\n if (keepProportion) {\r\n var comparePoint = centeredScaling\r\n ? {\r\n x: this.width() / 2,\r\n y: this.height() / 2,\r\n }\r\n : {\r\n x: this.findOne('.bottom-left').x(),\r\n y: this.findOne('.bottom-left').y(),\r\n };\r\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\r\n Math.pow(comparePoint.y - anchorNode.y(), 2));\r\n var reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\r\n var reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\r\n x = newHypotenuse * this.cos * reverseX;\r\n y = newHypotenuse * this.sin * reverseY;\r\n this.findOne('.top-right').x(comparePoint.x + x);\r\n this.findOne('.top-right').y(comparePoint.y - y);\r\n }\r\n var pos = anchorNode.position();\r\n this.findOne('.top-left').y(pos.y);\r\n this.findOne('.bottom-right').x(pos.x);\r\n }\r\n else if (this._movingAnchorName === 'middle-left') {\r\n this.findOne('.top-left').x(anchorNode.x());\r\n }\r\n else if (this._movingAnchorName === 'middle-right') {\r\n this.findOne('.bottom-right').x(anchorNode.x());\r\n }\r\n else if (this._movingAnchorName === 'bottom-left') {\r\n if (keepProportion) {\r\n var comparePoint = centeredScaling\r\n ? {\r\n x: this.width() / 2,\r\n y: this.height() / 2,\r\n }\r\n : {\r\n x: this.findOne('.top-right').x(),\r\n y: this.findOne('.top-right').y(),\r\n };\r\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\r\n Math.pow(anchorNode.y() - comparePoint.y, 2));\r\n var reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\r\n var reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\r\n x = newHypotenuse * this.cos * reverseX;\r\n y = newHypotenuse * this.sin * reverseY;\r\n anchorNode.x(comparePoint.x - x);\r\n anchorNode.y(comparePoint.y + y);\r\n }\r\n pos = anchorNode.position();\r\n this.findOne('.top-left').x(pos.x);\r\n this.findOne('.bottom-right').y(pos.y);\r\n }\r\n else if (this._movingAnchorName === 'bottom-center') {\r\n this.findOne('.bottom-right').y(anchorNode.y());\r\n }\r\n else if (this._movingAnchorName === 'bottom-right') {\r\n if (keepProportion) {\r\n var comparePoint = centeredScaling\r\n ? {\r\n x: this.width() / 2,\r\n y: this.height() / 2,\r\n }\r\n : {\r\n x: this.findOne('.top-left').x(),\r\n y: this.findOne('.top-left').y(),\r\n };\r\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\r\n Math.pow(anchorNode.y() - comparePoint.y, 2));\r\n var reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\r\n var reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\r\n x = newHypotenuse * this.cos * reverseX;\r\n y = newHypotenuse * this.sin * reverseY;\r\n this.findOne('.bottom-right').x(comparePoint.x + x);\r\n this.findOne('.bottom-right').y(comparePoint.y + y);\r\n }\r\n }\r\n else {\r\n console.error(new Error('Wrong position argument of selection resizer: ' +\r\n this._movingAnchorName));\r\n }\r\n var centeredScaling = this.centeredScaling() || e.altKey;\r\n if (centeredScaling) {\r\n var topLeft = this.findOne('.top-left');\r\n var bottomRight = this.findOne('.bottom-right');\r\n var topOffsetX = topLeft.x();\r\n var topOffsetY = topLeft.y();\r\n var bottomOffsetX = this.getWidth() - bottomRight.x();\r\n var bottomOffsetY = this.getHeight() - bottomRight.y();\r\n bottomRight.move({\r\n x: -topOffsetX,\r\n y: -topOffsetY,\r\n });\r\n topLeft.move({\r\n x: bottomOffsetX,\r\n y: bottomOffsetY,\r\n });\r\n }\r\n var absPos = this.findOne('.top-left').getAbsolutePosition();\r\n x = absPos.x;\r\n y = absPos.y;\r\n var width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\r\n var height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\r\n this._fitNodesInto({\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height,\r\n rotation: Konva.getAngle(this.rotation()),\r\n }, e);\r\n };\r\n Transformer.prototype._handleMouseUp = function (e) {\r\n this._removeEvents(e);\r\n };\r\n Transformer.prototype.getAbsoluteTransform = function () {\r\n return this.getTransform();\r\n };\r\n Transformer.prototype._removeEvents = function (e) {\r\n if (this._transforming) {\r\n this._transforming = false;\r\n window.removeEventListener('mousemove', this._handleMouseMove);\r\n window.removeEventListener('touchmove', this._handleMouseMove);\r\n window.removeEventListener('mouseup', this._handleMouseUp, true);\r\n window.removeEventListener('touchend', this._handleMouseUp, true);\r\n var node = this.getNode();\r\n this._fire('transformend', { evt: e, target: node });\r\n if (node) {\r\n node.fire('transformend', { evt: e, target: node });\r\n }\r\n this._movingAnchorName = null;\r\n }\r\n };\r\n Transformer.prototype._fitNodesInto = function (newAttrs, evt) {\r\n var _this = this;\r\n var oldAttrs = this._getNodeRect();\r\n var minSize = 1;\r\n if (Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\r\n this.update();\r\n return;\r\n }\r\n if (Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\r\n this.update();\r\n return;\r\n }\r\n var t = new Transform();\r\n t.rotate(Konva.getAngle(this.rotation()));\r\n if (this._movingAnchorName &&\r\n newAttrs.width < 0 &&\r\n this._movingAnchorName.indexOf('left') >= 0) {\r\n var offset = t.point({\r\n x: -this.padding() * 2,\r\n y: 0,\r\n });\r\n newAttrs.x += offset.x;\r\n newAttrs.y += offset.y;\r\n newAttrs.width += this.padding() * 2;\r\n this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\r\n this._anchorDragOffset.x -= offset.x;\r\n this._anchorDragOffset.y -= offset.y;\r\n }\r\n else if (this._movingAnchorName &&\r\n newAttrs.width < 0 &&\r\n this._movingAnchorName.indexOf('right') >= 0) {\r\n var offset = t.point({\r\n x: this.padding() * 2,\r\n y: 0,\r\n });\r\n this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\r\n this._anchorDragOffset.x -= offset.x;\r\n this._anchorDragOffset.y -= offset.y;\r\n newAttrs.width += this.padding() * 2;\r\n }\r\n if (this._movingAnchorName &&\r\n newAttrs.height < 0 &&\r\n this._movingAnchorName.indexOf('top') >= 0) {\r\n var offset = t.point({\r\n x: 0,\r\n y: -this.padding() * 2,\r\n });\r\n newAttrs.x += offset.x;\r\n newAttrs.y += offset.y;\r\n this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\r\n this._anchorDragOffset.x -= offset.x;\r\n this._anchorDragOffset.y -= offset.y;\r\n newAttrs.height += this.padding() * 2;\r\n }\r\n else if (this._movingAnchorName &&\r\n newAttrs.height < 0 &&\r\n this._movingAnchorName.indexOf('bottom') >= 0) {\r\n var offset = t.point({\r\n x: 0,\r\n y: this.padding() * 2,\r\n });\r\n this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\r\n this._anchorDragOffset.x -= offset.x;\r\n this._anchorDragOffset.y -= offset.y;\r\n newAttrs.height += this.padding() * 2;\r\n }\r\n if (this.boundBoxFunc()) {\r\n var bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\r\n if (bounded) {\r\n newAttrs = bounded;\r\n }\r\n else {\r\n Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\r\n }\r\n }\r\n // base size value doesn't really matter\r\n // we just need to think about bounding boxes as transforms\r\n // but how?\r\n // the idea is that we have a transformed rectangle with the size of \"baseSize\"\r\n var baseSize = 10000000;\r\n var oldTr = new Transform();\r\n oldTr.translate(oldAttrs.x, oldAttrs.y);\r\n oldTr.rotate(oldAttrs.rotation);\r\n oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\r\n var newTr = new Transform();\r\n newTr.translate(newAttrs.x, newAttrs.y);\r\n newTr.rotate(newAttrs.rotation);\r\n newTr.scale(newAttrs.width / baseSize, newAttrs.height / baseSize);\r\n // now lets think we had [old transform] and now we have [new transform]\r\n // Now, the questions is: how can we transform \"parent\" to go from [old transform] into [new transform]\r\n // in equation it will be:\r\n // [delta transform] * [old transform] = [new transform]\r\n // that means that\r\n // [delta transform] = [new transform] * [old transform inverted]\r\n var delta = newTr.multiply(oldTr.invert());\r\n this._nodes.forEach(function (node) {\r\n // for each node we have the same [delta transform]\r\n // the equations is\r\n // [delta transform] * [parent transform] * [old local transform] = [parent transform] * [new local transform]\r\n // and we need to find [new local transform]\r\n // [new local] = [parent inverted] * [delta] * [parent] * [old local]\r\n var parentTransform = node.getParent().getAbsoluteTransform();\r\n var localTransform = node.getTransform().copy();\r\n // skip offset:\r\n localTransform.translate(node.offsetX(), node.offsetY());\r\n var newLocalTransform = new Transform();\r\n newLocalTransform\r\n .multiply(parentTransform.copy().invert())\r\n .multiply(delta)\r\n .multiply(parentTransform)\r\n .multiply(localTransform);\r\n var attrs = newLocalTransform.decompose();\r\n node.setAttrs(attrs);\r\n _this._fire('transform', { evt: evt, target: node });\r\n node._fire('transform', { evt: evt, target: node });\r\n });\r\n this.rotation(Util._getRotation(newAttrs.rotation));\r\n this._resetTransformCache();\r\n this.update();\r\n this.getLayer().batchDraw();\r\n };\r\n /**\r\n * force update of Konva.Transformer.\r\n * Use it when you updated attached Konva.Group and now you need to reset transformer size\r\n * @method\r\n * @name Konva.Transformer#forceUpdate\r\n */\r\n Transformer.prototype.forceUpdate = function () {\r\n this._resetTransformCache();\r\n this.update();\r\n };\r\n Transformer.prototype._batchChangeChild = function (selector, attrs) {\r\n var anchor = this.findOne(selector);\r\n anchor.setAttrs(attrs);\r\n };\r\n Transformer.prototype.update = function () {\r\n var _this = this;\r\n var attrs = this._getNodeRect();\r\n this.rotation(Util._getRotation(attrs.rotation));\r\n var width = attrs.width;\r\n var height = attrs.height;\r\n var enabledAnchors = this.enabledAnchors();\r\n var resizeEnabled = this.resizeEnabled();\r\n var padding = this.padding();\r\n var anchorSize = this.anchorSize();\r\n this.find('._anchor').each(function (node) {\r\n node.setAttrs({\r\n width: anchorSize,\r\n height: anchorSize,\r\n offsetX: anchorSize / 2,\r\n offsetY: anchorSize / 2,\r\n stroke: _this.anchorStroke(),\r\n strokeWidth: _this.anchorStrokeWidth(),\r\n fill: _this.anchorFill(),\r\n cornerRadius: _this.anchorCornerRadius(),\r\n });\r\n });\r\n this._batchChangeChild('.top-left', {\r\n x: 0,\r\n y: 0,\r\n offsetX: anchorSize / 2 + padding,\r\n offsetY: anchorSize / 2 + padding,\r\n visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\r\n });\r\n this._batchChangeChild('.top-center', {\r\n x: width / 2,\r\n y: 0,\r\n offsetY: anchorSize / 2 + padding,\r\n visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\r\n });\r\n this._batchChangeChild('.top-right', {\r\n x: width,\r\n y: 0,\r\n offsetX: anchorSize / 2 - padding,\r\n offsetY: anchorSize / 2 + padding,\r\n visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\r\n });\r\n this._batchChangeChild('.middle-left', {\r\n x: 0,\r\n y: height / 2,\r\n offsetX: anchorSize / 2 + padding,\r\n visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\r\n });\r\n this._batchChangeChild('.middle-right', {\r\n x: width,\r\n y: height / 2,\r\n offsetX: anchorSize / 2 - padding,\r\n visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\r\n });\r\n this._batchChangeChild('.bottom-left', {\r\n x: 0,\r\n y: height,\r\n offsetX: anchorSize / 2 + padding,\r\n offsetY: anchorSize / 2 - padding,\r\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\r\n });\r\n this._batchChangeChild('.bottom-center', {\r\n x: width / 2,\r\n y: height,\r\n offsetY: anchorSize / 2 - padding,\r\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\r\n });\r\n this._batchChangeChild('.bottom-right', {\r\n x: width,\r\n y: height,\r\n offsetX: anchorSize / 2 - padding,\r\n offsetY: anchorSize / 2 - padding,\r\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\r\n });\r\n this._batchChangeChild('.rotater', {\r\n x: width / 2,\r\n y: -this.rotateAnchorOffset() * Util._sign(height) - padding,\r\n visible: this.rotateEnabled(),\r\n });\r\n this._batchChangeChild('.back', {\r\n width: width,\r\n height: height,\r\n visible: this.borderEnabled(),\r\n stroke: this.borderStroke(),\r\n strokeWidth: this.borderStrokeWidth(),\r\n dash: this.borderDash(),\r\n x: 0,\r\n y: 0,\r\n });\r\n };\r\n /**\r\n * determine if transformer is in active transform\r\n * @method\r\n * @name Konva.Transformer#isTransforming\r\n * @returns {Boolean}\r\n */\r\n Transformer.prototype.isTransforming = function () {\r\n return this._transforming;\r\n };\r\n /**\r\n * Stop active transform action\r\n * @method\r\n * @name Konva.Transformer#stopTransform\r\n * @returns {Boolean}\r\n */\r\n Transformer.prototype.stopTransform = function () {\r\n if (this._transforming) {\r\n this._removeEvents();\r\n var anchorNode = this.findOne('.' + this._movingAnchorName);\r\n if (anchorNode) {\r\n anchorNode.stopDrag();\r\n }\r\n }\r\n };\r\n Transformer.prototype.destroy = function () {\r\n if (this.getStage() && this._cursorChange) {\r\n this.getStage().content.style.cursor = '';\r\n }\r\n Group.prototype.destroy.call(this);\r\n this.detach();\r\n this._removeEvents();\r\n return this;\r\n };\r\n // do not work as a container\r\n // we will recreate inner nodes manually\r\n Transformer.prototype.toObject = function () {\r\n return Node.prototype.toObject.call(this);\r\n };\r\n return Transformer;\r\n }(Group));\r\n function validateAnchors(val) {\r\n if (!(val instanceof Array)) {\r\n Util.warn('enabledAnchors value should be an array');\r\n }\r\n if (val instanceof Array) {\r\n val.forEach(function (name) {\r\n if (ANCHORS_NAMES.indexOf(name) === -1) {\r\n Util.warn('Unknown anchor name: ' +\r\n name +\r\n '. Available names are: ' +\r\n ANCHORS_NAMES.join(', '));\r\n }\r\n });\r\n }\r\n return val || [];\r\n }\r\n Transformer.prototype.className = 'Transformer';\r\n _registerNode(Transformer);\r\n /**\r\n * get/set enabled handlers\r\n * @name Konva.Transformer#enabledAnchors\r\n * @method\r\n * @param {Array} array\r\n * @returns {Array}\r\n * @example\r\n * // get list of handlers\r\n * var enabledAnchors = transformer.enabledAnchors();\r\n *\r\n * // set handlers\r\n * transformer.enabledAnchors(['top-left', 'top-center', 'top-right', 'middle-right', 'middle-left', 'bottom-left', 'bottom-center', 'bottom-right']);\r\n */\r\n Factory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\r\n /**\r\n * get/set resize ability. If false it will automatically hide resizing handlers\r\n * @name Konva.Transformer#resizeEnabled\r\n * @method\r\n * @param {Array} array\r\n * @returns {Array}\r\n * @example\r\n * // get\r\n * var resizeEnabled = transformer.resizeEnabled();\r\n *\r\n * // set\r\n * transformer.resizeEnabled(false);\r\n */\r\n Factory.addGetterSetter(Transformer, 'resizeEnabled', true);\r\n /**\r\n * get/set anchor size. Default is 10\r\n * @name Konva.Transformer#validateAnchors\r\n * @method\r\n * @param {Number} 10\r\n * @returns {Number}\r\n * @example\r\n * // get\r\n * var anchorSize = transformer.anchorSize();\r\n *\r\n * // set\r\n * transformer.anchorSize(20)\r\n */\r\n Factory.addGetterSetter(Transformer, 'anchorSize', 10, getNumberValidator());\r\n /**\r\n * get/set ability to rotate.\r\n * @name Konva.Transformer#rotateEnabled\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get\r\n * var rotateEnabled = transformer.rotateEnabled();\r\n *\r\n * // set\r\n * transformer.rotateEnabled(false);\r\n */\r\n Factory.addGetterSetter(Transformer, 'rotateEnabled', true);\r\n /**\r\n * get/set rotation snaps angles.\r\n * @name Konva.Transformer#rotationSnaps\r\n * @method\r\n * @param {Array} array\r\n * @returns {Array}\r\n * @example\r\n * // get\r\n * var rotationSnaps = transformer.rotationSnaps();\r\n *\r\n * // set\r\n * transformer.rotationSnaps([0, 90, 180, 270]);\r\n */\r\n Factory.addGetterSetter(Transformer, 'rotationSnaps', []);\r\n /**\r\n * get/set distance for rotation handler\r\n * @name Konva.Transformer#rotateAnchorOffset\r\n * @method\r\n * @param {Number} offset\r\n * @returns {Number}\r\n * @example\r\n * // get\r\n * var rotateAnchorOffset = transformer.rotateAnchorOffset();\r\n *\r\n * // set\r\n * transformer.rotateAnchorOffset(100);\r\n */\r\n Factory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, getNumberValidator());\r\n /**\r\n * get/set distance for rotation tolerance\r\n * @name Konva.Transformer#rotationSnapTolerance\r\n * @method\r\n * @param {Number} tolerance\r\n * @returns {Number}\r\n * @example\r\n * // get\r\n * var rotationSnapTolerance = transformer.rotationSnapTolerance();\r\n *\r\n * // set\r\n * transformer.rotationSnapTolerance(100);\r\n */\r\n Factory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, getNumberValidator());\r\n /**\r\n * get/set visibility of border\r\n * @name Konva.Transformer#borderEnabled\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get\r\n * var borderEnabled = transformer.borderEnabled();\r\n *\r\n * // set\r\n * transformer.borderEnabled(false);\r\n */\r\n Factory.addGetterSetter(Transformer, 'borderEnabled', true);\r\n /**\r\n * get/set anchor stroke color\r\n * @name Konva.Transformer#anchorStroke\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get\r\n * var anchorStroke = transformer.anchorStroke();\r\n *\r\n * // set\r\n * transformer.anchorStroke('red');\r\n */\r\n Factory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\r\n /**\r\n * get/set anchor stroke width\r\n * @name Konva.Transformer#anchorStrokeWidth\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get\r\n * var anchorStrokeWidth = transformer.anchorStrokeWidth();\r\n *\r\n * // set\r\n * transformer.anchorStrokeWidth(3);\r\n */\r\n Factory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, getNumberValidator());\r\n /**\r\n * get/set anchor fill color\r\n * @name Konva.Transformer#anchorFill\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get\r\n * var anchorFill = transformer.anchorFill();\r\n *\r\n * // set\r\n * transformer.anchorFill('red');\r\n */\r\n Factory.addGetterSetter(Transformer, 'anchorFill', 'white');\r\n /**\r\n * get/set anchor corner radius\r\n * @name Konva.Transformer#anchorCornerRadius\r\n * @method\r\n * @param {Number} enabled\r\n * @returns {Number}\r\n * @example\r\n * // get\r\n * var anchorCornerRadius = transformer.anchorCornerRadius();\r\n *\r\n * // set\r\n * transformer.anchorCornerRadius(3);\r\n */\r\n Factory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, getNumberValidator());\r\n /**\r\n * get/set border stroke color\r\n * @name Konva.Transformer#borderStroke\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get\r\n * var borderStroke = transformer.borderStroke();\r\n *\r\n * // set\r\n * transformer.borderStroke('red');\r\n */\r\n Factory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\r\n /**\r\n * get/set border stroke width\r\n * @name Konva.Transformer#borderStrokeWidth\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get\r\n * var borderStrokeWidth = transformer.borderStrokeWidth();\r\n *\r\n * // set\r\n * transformer.borderStrokeWidth(3);\r\n */\r\n Factory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, getNumberValidator());\r\n /**\r\n * get/set border dash array\r\n * @name Konva.Transformer#borderDash\r\n * @method\r\n * @param {Boolean} enabled\r\n * @returns {Boolean}\r\n * @example\r\n * // get\r\n * var borderDash = transformer.borderDash();\r\n *\r\n * // set\r\n * transformer.borderDash([2, 2]);\r\n */\r\n Factory.addGetterSetter(Transformer, 'borderDash');\r\n /**\r\n * get/set should we keep ratio while resize anchors at corners\r\n * @name Konva.Transformer#keepRatio\r\n * @method\r\n * @param {Boolean} keepRatio\r\n * @returns {Boolean}\r\n * @example\r\n * // get\r\n * var keepRatio = transformer.keepRatio();\r\n *\r\n * // set\r\n * transformer.keepRatio(false);\r\n */\r\n Factory.addGetterSetter(Transformer, 'keepRatio', true);\r\n /**\r\n * get/set should we resize relative to node's center?\r\n * @name Konva.Transformer#centeredScaling\r\n * @method\r\n * @param {Boolean} centeredScaling\r\n * @returns {Boolean}\r\n * @example\r\n * // get\r\n * var centeredScaling = transformer.centeredScaling();\r\n *\r\n * // set\r\n * transformer.centeredScaling(true);\r\n */\r\n Factory.addGetterSetter(Transformer, 'centeredScaling', false);\r\n /**\r\n * get/set should we think about stroke while resize? Good to use when a shape has strokeScaleEnabled = false\r\n * default is false\r\n * @name Konva.Transformer#ignoreStroke\r\n * @method\r\n * @param {Boolean} ignoreStroke\r\n * @returns {Boolean}\r\n * @example\r\n * // get\r\n * var ignoreStroke = transformer.ignoreStroke();\r\n *\r\n * // set\r\n * transformer.ignoreStroke(true);\r\n */\r\n Factory.addGetterSetter(Transformer, 'ignoreStroke', false);\r\n /**\r\n * get/set padding\r\n * @name Konva.Transformer#padding\r\n * @method\r\n * @param {Number} padding\r\n * @returns {Number}\r\n * @example\r\n * // get\r\n * var padding = transformer.padding();\r\n *\r\n * // set\r\n * transformer.padding(10);\r\n */\r\n Factory.addGetterSetter(Transformer, 'padding', 0, getNumberValidator());\r\n Factory.addGetterSetter(Transformer, 'node');\r\n /**\r\n * get/set attached nodes of the Transformer. Transformer will adapt to their size and listen to their events\r\n * @method\r\n * @name Konva.Transformer#nodes\r\n * @returns {Konva.Node}\r\n * @example\r\n * // get\r\n * const nodes = transformer.nodes();\r\n *\r\n * // set\r\n * transformer.nodes([rect, circle]);\r\n *\r\n * // push new item:\r\n * const oldNodes = transformer.nodes();\r\n * const newNodes = oldNodes.concat([newShape]);\r\n * // it is important to set new array instance (and concat method above will create it)\r\n * transformer.nodes(newNodes);\r\n */\r\n Factory.addGetterSetter(Transformer, 'nodes');\r\n /**\r\n * get/set bounding box function. **IMPORTANT!** boundBondFunc operates in absolute coordinates.\r\n * @name Konva.Transformer#boundBoxFunc\r\n * @method\r\n * @param {Function} func\r\n * @returns {Function}\r\n * @example\r\n * // get\r\n * var boundBoxFunc = transformer.boundBoxFunc();\r\n *\r\n * // set\r\n * transformer.boundBoxFunc(function(oldBox, newBox) {\r\n * // width and height of the boxes are corresponding to total absolute width and height of all nodes combined\r\n * // so it includes scale of the node.\r\n * if (newBox.width > 200) {\r\n * return oldBox;\r\n * }\r\n * return newBox;\r\n * });\r\n */\r\n Factory.addGetterSetter(Transformer, 'boundBoxFunc');\r\n Factory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\r\n Factory.backCompat(Transformer, {\r\n lineEnabled: 'borderEnabled',\r\n rotateHandlerOffset: 'rotateAnchorOffset',\r\n enabledHandlers: 'enabledAnchors',\r\n });\r\n Collection.mapMethods(Transformer);\n\n /**\r\n * Wedge constructor\r\n * @constructor\r\n * @memberof Konva\r\n * @augments Konva.Shape\r\n * @param {Object} config\r\n * @param {Number} config.angle in degrees\r\n * @param {Number} config.radius\r\n * @param {Boolean} [config.clockwise]\r\n * @param {String} [config.fill] fill color\n * @param {Image} [config.fillPatternImage] fill pattern image\n * @param {Number} [config.fillPatternX]\n * @param {Number} [config.fillPatternY]\n * @param {Object} [config.fillPatternOffset] object with x and y component\n * @param {Number} [config.fillPatternOffsetX] \n * @param {Number} [config.fillPatternOffsetY] \n * @param {Object} [config.fillPatternScale] object with x and y component\n * @param {Number} [config.fillPatternScaleX]\n * @param {Number} [config.fillPatternScaleY]\n * @param {Number} [config.fillPatternRotation]\n * @param {String} [config.fillPatternRepeat] can be \"repeat\", \"repeat-x\", \"repeat-y\", or \"no-repeat\". The default is \"no-repeat\"\n * @param {Object} [config.fillLinearGradientStartPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientStartPointX]\n * @param {Number} [config.fillLinearGradientStartPointY]\n * @param {Object} [config.fillLinearGradientEndPoint] object with x and y component\n * @param {Number} [config.fillLinearGradientEndPointX]\n * @param {Number} [config.fillLinearGradientEndPointY]\n * @param {Array} [config.fillLinearGradientColorStops] array of color stops\n * @param {Object} [config.fillRadialGradientStartPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientStartPointX]\n * @param {Number} [config.fillRadialGradientStartPointY]\n * @param {Object} [config.fillRadialGradientEndPoint] object with x and y component\n * @param {Number} [config.fillRadialGradientEndPointX] \n * @param {Number} [config.fillRadialGradientEndPointY] \n * @param {Number} [config.fillRadialGradientStartRadius]\n * @param {Number} [config.fillRadialGradientEndRadius]\n * @param {Array} [config.fillRadialGradientColorStops] array of color stops\n * @param {Boolean} [config.fillEnabled] flag which enables or disables the fill. The default value is true\n * @param {String} [config.fillPriority] can be color, linear-gradient, radial-graident, or pattern. The default value is color. The fillPriority property makes it really easy to toggle between different fill types. For example, if you want to toggle between a fill color style and a fill pattern style, simply set the fill property and the fillPattern properties, and then use setFillPriority('color') to render the shape with a color fill, or use setFillPriority('pattern') to render the shape with the pattern fill configuration\n * @param {String} [config.stroke] stroke color\n * @param {Number} [config.strokeWidth] stroke width\n * @param {Number} [config.hitStrokeWidth] size of the stroke on hit canvas. The default is \"auto\" - equals to strokeWidth\n * @param {Boolean} [config.strokeHitEnabled] flag which enables or disables stroke hit region. The default is true\n * @param {Boolean} [config.perfectDrawEnabled] flag which enables or disables using buffer canvas. The default is true\n * @param {Boolean} [config.shadowForStrokeEnabled] flag which enables or disables shadow for stroke. The default is true\n * @param {Boolean} [config.strokeScaleEnabled] flag which enables or disables stroke scale. The default is true\n * @param {Boolean} [config.strokeEnabled] flag which enables or disables the stroke. The default value is true\n * @param {String} [config.lineJoin] can be miter, round, or bevel. The default\n * is miter\n * @param {String} [config.lineCap] can be butt, round, or square. The default\n * is butt\n * @param {String} [config.shadowColor]\n * @param {Number} [config.shadowBlur]\n * @param {Object} [config.shadowOffset] object with x and y component\n * @param {Number} [config.shadowOffsetX]\n * @param {Number} [config.shadowOffsetY]\n * @param {Number} [config.shadowOpacity] shadow opacity. Can be any real number\n * between 0 and 1\n * @param {Boolean} [config.shadowEnabled] flag which enables or disables the shadow. The default value is true\n * @param {Array} [config.dash]\n * @param {Boolean} [config.dashEnabled] flag which enables or disables the dashArray. The default value is true\n\r\n * @param {Number} [config.x]\n * @param {Number} [config.y]\n * @param {Number} [config.width]\n * @param {Number} [config.height]\n * @param {Boolean} [config.visible]\n * @param {Boolean} [config.listening] whether or not the node is listening for events\n * @param {String} [config.id] unique id\n * @param {String} [config.name] non-unique name\n * @param {Number} [config.opacity] determines node opacity. Can be any number between 0 and 1\n * @param {Object} [config.scale] set scale\n * @param {Number} [config.scaleX] set scale x\n * @param {Number} [config.scaleY] set scale y\n * @param {Number} [config.rotation] rotation in degrees\n * @param {Object} [config.offset] offset from center point and rotation point\n * @param {Number} [config.offsetX] set offset x\n * @param {Number} [config.offsetY] set offset y\n * @param {Boolean} [config.draggable] makes the node draggable. When stages are draggable, you can drag and drop\n * the entire stage by dragging any portion of the stage\n * @param {Number} [config.dragDistance]\n * @param {Function} [config.dragBoundFunc]\r\n * @example\r\n * // draw a wedge that's pointing downwards\r\n * var wedge = new Konva.Wedge({\r\n * radius: 40,\r\n * fill: 'red',\r\n * stroke: 'black'\r\n * strokeWidth: 5,\r\n * angleDeg: 60,\r\n * rotationDeg: -120\r\n * });\r\n */\r\n var Wedge = /** @class */ (function (_super) {\r\n __extends(Wedge, _super);\r\n function Wedge() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Wedge.prototype._sceneFunc = function (context) {\r\n context.beginPath();\r\n context.arc(0, 0, this.radius(), 0, Konva.getAngle(this.angle()), this.clockwise());\r\n context.lineTo(0, 0);\r\n context.closePath();\r\n context.fillStrokeShape(this);\r\n };\r\n Wedge.prototype.getWidth = function () {\r\n return this.radius() * 2;\r\n };\r\n Wedge.prototype.getHeight = function () {\r\n return this.radius() * 2;\r\n };\r\n Wedge.prototype.setWidth = function (width) {\r\n this.radius(width / 2);\r\n };\r\n Wedge.prototype.setHeight = function (height) {\r\n this.radius(height / 2);\r\n };\r\n return Wedge;\r\n }(Shape));\r\n Wedge.prototype.className = 'Wedge';\r\n Wedge.prototype._centroid = true;\r\n Wedge.prototype._attrsAffectingSize = ['radius'];\r\n _registerNode(Wedge);\r\n /**\r\n * get/set radius\r\n * @name Konva.Wedge#radius\r\n * @method\r\n * @param {Number} radius\r\n * @returns {Number}\r\n * @example\r\n * // get radius\r\n * var radius = wedge.radius();\r\n *\r\n * // set radius\r\n * wedge.radius(10);\r\n */\r\n Factory.addGetterSetter(Wedge, 'radius', 0, getNumberValidator());\r\n /**\r\n * get/set angle in degrees\r\n * @name Konva.Wedge#angle\r\n * @method\r\n * @param {Number} angle\r\n * @returns {Number}\r\n * @example\r\n * // get angle\r\n * var angle = wedge.angle();\r\n *\r\n * // set angle\r\n * wedge.angle(20);\r\n */\r\n Factory.addGetterSetter(Wedge, 'angle', 0, getNumberValidator());\r\n /**\r\n * get/set clockwise flag\r\n * @name Konva.Wedge#clockwise\r\n * @method\r\n * @param {Number} clockwise\r\n * @returns {Number}\r\n * @example\r\n * // get clockwise flag\r\n * var clockwise = wedge.clockwise();\r\n *\r\n * // draw wedge counter-clockwise\r\n * wedge.clockwise(false);\r\n *\r\n * // draw wedge clockwise\r\n * wedge.clockwise(true);\r\n */\r\n Factory.addGetterSetter(Wedge, 'clockwise', false);\r\n Factory.backCompat(Wedge, {\r\n angleDeg: 'angle',\r\n getAngleDeg: 'getAngle',\r\n setAngleDeg: 'setAngle'\r\n });\r\n Collection.mapMethods(Wedge);\n\n /*\r\n the Gauss filter\r\n master repo: https://github.com/pavelpower/kineticjsGaussFilter\r\n */\r\n /*\r\n\n StackBlur - a fast almost Gaussian Blur For Canvas\r\n\n Version: 0.5\r\n Author: Mario Klingemann\r\n Contact: mario@quasimondo.com\r\n Website: http://www.quasimondo.com/StackBlurForCanvas\r\n Twitter: @quasimondo\r\n\n In case you find this class useful - especially in commercial projects -\r\n I am not totally unhappy for a small donation to my PayPal account\r\n mario@quasimondo.de\r\n\n Or support me on flattr:\r\n https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript\r\n\n Copyright (c) 2010 Mario Klingemann\r\n\n Permission is hereby granted, free of charge, to any person\r\n obtaining a copy of this software and associated documentation\r\n files (the \"Software\"), to deal in the Software without\r\n restriction, including without limitation the rights to use,\r\n copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the\r\n Software is furnished to do so, subject to the following\r\n conditions:\r\n\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n function BlurStack() {\r\n this.r = 0;\r\n this.g = 0;\r\n this.b = 0;\r\n this.a = 0;\r\n this.next = null;\r\n }\r\n var mul_table = [\r\n 512,\r\n 512,\r\n 456,\r\n 512,\r\n 328,\r\n 456,\r\n 335,\r\n 512,\r\n 405,\r\n 328,\r\n 271,\r\n 456,\r\n 388,\r\n 335,\r\n 292,\r\n 512,\r\n 454,\r\n 405,\r\n 364,\r\n 328,\r\n 298,\r\n 271,\r\n 496,\r\n 456,\r\n 420,\r\n 388,\r\n 360,\r\n 335,\r\n 312,\r\n 292,\r\n 273,\r\n 512,\r\n 482,\r\n 454,\r\n 428,\r\n 405,\r\n 383,\r\n 364,\r\n 345,\r\n 328,\r\n 312,\r\n 298,\r\n 284,\r\n 271,\r\n 259,\r\n 496,\r\n 475,\r\n 456,\r\n 437,\r\n 420,\r\n 404,\r\n 388,\r\n 374,\r\n 360,\r\n 347,\r\n 335,\r\n 323,\r\n 312,\r\n 302,\r\n 292,\r\n 282,\r\n 273,\r\n 265,\r\n 512,\r\n 497,\r\n 482,\r\n 468,\r\n 454,\r\n 441,\r\n 428,\r\n 417,\r\n 405,\r\n 394,\r\n 383,\r\n 373,\r\n 364,\r\n 354,\r\n 345,\r\n 337,\r\n 328,\r\n 320,\r\n 312,\r\n 305,\r\n 298,\r\n 291,\r\n 284,\r\n 278,\r\n 271,\r\n 265,\r\n 259,\r\n 507,\r\n 496,\r\n 485,\r\n 475,\r\n 465,\r\n 456,\r\n 446,\r\n 437,\r\n 428,\r\n 420,\r\n 412,\r\n 404,\r\n 396,\r\n 388,\r\n 381,\r\n 374,\r\n 367,\r\n 360,\r\n 354,\r\n 347,\r\n 341,\r\n 335,\r\n 329,\r\n 323,\r\n 318,\r\n 312,\r\n 307,\r\n 302,\r\n 297,\r\n 292,\r\n 287,\r\n 282,\r\n 278,\r\n 273,\r\n 269,\r\n 265,\r\n 261,\r\n 512,\r\n 505,\r\n 497,\r\n 489,\r\n 482,\r\n 475,\r\n 468,\r\n 461,\r\n 454,\r\n 447,\r\n 441,\r\n 435,\r\n 428,\r\n 422,\r\n 417,\r\n 411,\r\n 405,\r\n 399,\r\n 394,\r\n 389,\r\n 383,\r\n 378,\r\n 373,\r\n 368,\r\n 364,\r\n 359,\r\n 354,\r\n 350,\r\n 345,\r\n 341,\r\n 337,\r\n 332,\r\n 328,\r\n 324,\r\n 320,\r\n 316,\r\n 312,\r\n 309,\r\n 305,\r\n 301,\r\n 298,\r\n 294,\r\n 291,\r\n 287,\r\n 284,\r\n 281,\r\n 278,\r\n 274,\r\n 271,\r\n 268,\r\n 265,\r\n 262,\r\n 259,\r\n 257,\r\n 507,\r\n 501,\r\n 496,\r\n 491,\r\n 485,\r\n 480,\r\n 475,\r\n 470,\r\n 465,\r\n 460,\r\n 456,\r\n 451,\r\n 446,\r\n 442,\r\n 437,\r\n 433,\r\n 428,\r\n 424,\r\n 420,\r\n 416,\r\n 412,\r\n 408,\r\n 404,\r\n 400,\r\n 396,\r\n 392,\r\n 388,\r\n 385,\r\n 381,\r\n 377,\r\n 374,\r\n 370,\r\n 367,\r\n 363,\r\n 360,\r\n 357,\r\n 354,\r\n 350,\r\n 347,\r\n 344,\r\n 341,\r\n 338,\r\n 335,\r\n 332,\r\n 329,\r\n 326,\r\n 323,\r\n 320,\r\n 318,\r\n 315,\r\n 312,\r\n 310,\r\n 307,\r\n 304,\r\n 302,\r\n 299,\r\n 297,\r\n 294,\r\n 292,\r\n 289,\r\n 287,\r\n 285,\r\n 282,\r\n 280,\r\n 278,\r\n 275,\r\n 273,\r\n 271,\r\n 269,\r\n 267,\r\n 265,\r\n 263,\r\n 261,\r\n 259\r\n ];\r\n var shg_table = [\r\n 9,\r\n 11,\r\n 12,\r\n 13,\r\n 13,\r\n 14,\r\n 14,\r\n 15,\r\n 15,\r\n 15,\r\n 15,\r\n 16,\r\n 16,\r\n 16,\r\n 16,\r\n 17,\r\n 17,\r\n 17,\r\n 17,\r\n 17,\r\n 17,\r\n 17,\r\n 18,\r\n 18,\r\n 18,\r\n 18,\r\n 18,\r\n 18,\r\n 18,\r\n 18,\r\n 18,\r\n 19,\r\n 19,\r\n 19,\r\n 19,\r\n 19,\r\n 19,\r\n 19,\r\n 19,\r\n 19,\r\n 19,\r\n 19,\r\n 19,\r\n 19,\r\n 19,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 20,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 21,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 22,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 23,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24,\r\n 24\r\n ];\r\n function filterGaussBlurRGBA(imageData, radius) {\r\n var pixels = imageData.data, width = imageData.width, height = imageData.height;\r\n var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\r\n var div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), stackEnd = null, stack = stackStart, stackIn = null, stackOut = null, mul_sum = mul_table[radius], shg_sum = shg_table[radius];\r\n for (i = 1; i < div; i++) {\r\n stack = stack.next = new BlurStack();\r\n if (i === radiusPlus1) {\r\n stackEnd = stack;\r\n }\r\n }\r\n stack.next = stackStart;\r\n yw = yi = 0;\r\n for (y = 0; y < height; y++) {\r\n r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;\r\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\r\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\r\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\r\n r_sum += sumFactor * pr;\r\n g_sum += sumFactor * pg;\r\n b_sum += sumFactor * pb;\r\n a_sum += sumFactor * pa;\r\n stack = stackStart;\r\n for (i = 0; i < radiusPlus1; i++) {\r\n stack.r = pr;\r\n stack.g = pg;\r\n stack.b = pb;\r\n stack.a = pa;\r\n stack = stack.next;\r\n }\r\n for (i = 1; i < radiusPlus1; i++) {\r\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\r\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\r\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\r\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\r\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\r\n r_in_sum += pr;\r\n g_in_sum += pg;\r\n b_in_sum += pb;\r\n a_in_sum += pa;\r\n stack = stack.next;\r\n }\r\n stackIn = stackStart;\r\n stackOut = stackEnd;\r\n for (x = 0; x < width; x++) {\r\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\r\n if (pa !== 0) {\r\n pa = 255 / pa;\r\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\r\n }\r\n else {\r\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\r\n }\r\n r_sum -= r_out_sum;\r\n g_sum -= g_out_sum;\r\n b_sum -= b_out_sum;\r\n a_sum -= a_out_sum;\r\n r_out_sum -= stackIn.r;\r\n g_out_sum -= stackIn.g;\r\n b_out_sum -= stackIn.b;\r\n a_out_sum -= stackIn.a;\r\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\r\n r_in_sum += stackIn.r = pixels[p];\r\n g_in_sum += stackIn.g = pixels[p + 1];\r\n b_in_sum += stackIn.b = pixels[p + 2];\r\n a_in_sum += stackIn.a = pixels[p + 3];\r\n r_sum += r_in_sum;\r\n g_sum += g_in_sum;\r\n b_sum += b_in_sum;\r\n a_sum += a_in_sum;\r\n stackIn = stackIn.next;\r\n r_out_sum += pr = stackOut.r;\r\n g_out_sum += pg = stackOut.g;\r\n b_out_sum += pb = stackOut.b;\r\n a_out_sum += pa = stackOut.a;\r\n r_in_sum -= pr;\r\n g_in_sum -= pg;\r\n b_in_sum -= pb;\r\n a_in_sum -= pa;\r\n stackOut = stackOut.next;\r\n yi += 4;\r\n }\r\n yw += width;\r\n }\r\n for (x = 0; x < width; x++) {\r\n g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;\r\n yi = x << 2;\r\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\r\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\r\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\r\n r_sum += sumFactor * pr;\r\n g_sum += sumFactor * pg;\r\n b_sum += sumFactor * pb;\r\n a_sum += sumFactor * pa;\r\n stack = stackStart;\r\n for (i = 0; i < radiusPlus1; i++) {\r\n stack.r = pr;\r\n stack.g = pg;\r\n stack.b = pb;\r\n stack.a = pa;\r\n stack = stack.next;\r\n }\r\n yp = width;\r\n for (i = 1; i <= radius; i++) {\r\n yi = (yp + x) << 2;\r\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\r\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\r\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\r\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\r\n r_in_sum += pr;\r\n g_in_sum += pg;\r\n b_in_sum += pb;\r\n a_in_sum += pa;\r\n stack = stack.next;\r\n if (i < heightMinus1) {\r\n yp += width;\r\n }\r\n }\r\n yi = x;\r\n stackIn = stackStart;\r\n stackOut = stackEnd;\r\n for (y = 0; y < height; y++) {\r\n p = yi << 2;\r\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\r\n if (pa > 0) {\r\n pa = 255 / pa;\r\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\r\n }\r\n else {\r\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\r\n }\r\n r_sum -= r_out_sum;\r\n g_sum -= g_out_sum;\r\n b_sum -= b_out_sum;\r\n a_sum -= a_out_sum;\r\n r_out_sum -= stackIn.r;\r\n g_out_sum -= stackIn.g;\r\n b_out_sum -= stackIn.b;\r\n a_out_sum -= stackIn.a;\r\n p =\r\n (x +\r\n ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\r\n 2;\r\n r_sum += r_in_sum += stackIn.r = pixels[p];\r\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\r\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\r\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\r\n stackIn = stackIn.next;\r\n r_out_sum += pr = stackOut.r;\r\n g_out_sum += pg = stackOut.g;\r\n b_out_sum += pb = stackOut.b;\r\n a_out_sum += pa = stackOut.a;\r\n r_in_sum -= pr;\r\n g_in_sum -= pg;\r\n b_in_sum -= pb;\r\n a_in_sum -= pa;\r\n stackOut = stackOut.next;\r\n yi += width;\r\n }\r\n }\r\n }\r\n /**\r\n * Blur Filter\r\n * @function\r\n * @name Blur\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Blur]);\r\n * node.blurRadius(10);\r\n */\r\n var Blur = function Blur(imageData) {\r\n var radius = Math.round(this.blurRadius());\r\n if (radius > 0) {\r\n filterGaussBlurRGBA(imageData, radius);\r\n }\r\n };\r\n Factory.addGetterSetter(Node, 'blurRadius', 0, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set blur radius. Use with {@link Konva.Filters.Blur} filter\r\n * @name Konva.Node#blurRadius\r\n * @method\r\n * @param {Integer} radius\r\n * @returns {Integer}\r\n */\n\n /**\r\n * Brighten Filter.\r\n * @function\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Brighten]);\r\n * node.brightness(0.8);\r\n */\r\n var Brighten = function (imageData) {\r\n var brightness = this.brightness() * 255, data = imageData.data, len = data.length, i;\r\n for (i = 0; i < len; i += 4) {\r\n // red\r\n data[i] += brightness;\r\n // green\r\n data[i + 1] += brightness;\r\n // blue\r\n data[i + 2] += brightness;\r\n }\r\n };\r\n Factory.addGetterSetter(Node, 'brightness', 0, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set filter brightness. The brightness is a number between -1 and 1.  Positive values\r\n * brighten the pixels and negative values darken them. Use with {@link Konva.Filters.Brighten} filter.\r\n * @name Konva.Node#brightness\r\n * @method\r\n\n * @param {Number} brightness value between -1 and 1\r\n * @returns {Number}\r\n */\n\n /**\r\n * Contrast Filter.\r\n * @function\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Contrast]);\r\n * node.contrast(10);\r\n */\r\n var Contrast = function (imageData) {\r\n var adjust = Math.pow((this.contrast() + 100) / 100, 2);\r\n var data = imageData.data, nPixels = data.length, red = 150, green = 150, blue = 150, i;\r\n for (i = 0; i < nPixels; i += 4) {\r\n red = data[i];\r\n green = data[i + 1];\r\n blue = data[i + 2];\r\n //Red channel\r\n red /= 255;\r\n red -= 0.5;\r\n red *= adjust;\r\n red += 0.5;\r\n red *= 255;\r\n //Green channel\r\n green /= 255;\r\n green -= 0.5;\r\n green *= adjust;\r\n green += 0.5;\r\n green *= 255;\r\n //Blue channel\r\n blue /= 255;\r\n blue -= 0.5;\r\n blue *= adjust;\r\n blue += 0.5;\r\n blue *= 255;\r\n red = red < 0 ? 0 : red > 255 ? 255 : red;\r\n green = green < 0 ? 0 : green > 255 ? 255 : green;\r\n blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\r\n data[i] = red;\r\n data[i + 1] = green;\r\n data[i + 2] = blue;\r\n }\r\n };\r\n /**\r\n * get/set filter contrast. The contrast is a number between -100 and 100.\r\n * Use with {@link Konva.Filters.Contrast} filter.\r\n * @name Konva.Node#contrast\r\n * @method\r\n * @param {Number} contrast value between -100 and 100\r\n * @returns {Number}\r\n */\r\n Factory.addGetterSetter(Node, 'contrast', 0, getNumberValidator(), Factory.afterSetFilter);\n\n /**\r\n * Emboss Filter.\r\n * Pixastic Lib - Emboss filter - v0.1.0\r\n * Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.nihilogic.dk/\r\n * License: [http://www.pixastic.com/lib/license.txt]\r\n * @function\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Emboss]);\r\n * node.embossStrength(0.8);\r\n * node.embossWhiteLevel(0.3);\r\n * node.embossDirection('right');\r\n * node.embossBlend(true);\r\n */\r\n var Emboss = function (imageData) {\r\n // pixastic strength is between 0 and 10. I want it between 0 and 1\r\n // pixastic greyLevel is between 0 and 255. I want it between 0 and 1. Also,\r\n // a max value of greyLevel yields a white emboss, and the min value yields a black\r\n // emboss. Therefore, I changed greyLevel to whiteLevel\r\n var strength = this.embossStrength() * 10, greyLevel = this.embossWhiteLevel() * 255, direction = this.embossDirection(), blend = this.embossBlend(), dirY = 0, dirX = 0, data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\r\n switch (direction) {\r\n case 'top-left':\r\n dirY = -1;\r\n dirX = -1;\r\n break;\r\n case 'top':\r\n dirY = -1;\r\n dirX = 0;\r\n break;\r\n case 'top-right':\r\n dirY = -1;\r\n dirX = 1;\r\n break;\r\n case 'right':\r\n dirY = 0;\r\n dirX = 1;\r\n break;\r\n case 'bottom-right':\r\n dirY = 1;\r\n dirX = 1;\r\n break;\r\n case 'bottom':\r\n dirY = 1;\r\n dirX = 0;\r\n break;\r\n case 'bottom-left':\r\n dirY = 1;\r\n dirX = -1;\r\n break;\r\n case 'left':\r\n dirY = 0;\r\n dirX = -1;\r\n break;\r\n default:\r\n Util.error('Unknown emboss direction: ' + direction);\r\n }\r\n do {\r\n var offsetY = (y - 1) * w4;\r\n var otherY = dirY;\r\n if (y + otherY < 1) {\r\n otherY = 0;\r\n }\r\n if (y + otherY > h) {\r\n otherY = 0;\r\n }\r\n var offsetYOther = (y - 1 + otherY) * w * 4;\r\n var x = w;\r\n do {\r\n var offset = offsetY + (x - 1) * 4;\r\n var otherX = dirX;\r\n if (x + otherX < 1) {\r\n otherX = 0;\r\n }\r\n if (x + otherX > w) {\r\n otherX = 0;\r\n }\r\n var offsetOther = offsetYOther + (x - 1 + otherX) * 4;\r\n var dR = data[offset] - data[offsetOther];\r\n var dG = data[offset + 1] - data[offsetOther + 1];\r\n var dB = data[offset + 2] - data[offsetOther + 2];\r\n var dif = dR;\r\n var absDif = dif > 0 ? dif : -dif;\r\n var absG = dG > 0 ? dG : -dG;\r\n var absB = dB > 0 ? dB : -dB;\r\n if (absG > absDif) {\r\n dif = dG;\r\n }\r\n if (absB > absDif) {\r\n dif = dB;\r\n }\r\n dif *= strength;\r\n if (blend) {\r\n var r = data[offset] + dif;\r\n var g = data[offset + 1] + dif;\r\n var b = data[offset + 2] + dif;\r\n data[offset] = r > 255 ? 255 : r < 0 ? 0 : r;\r\n data[offset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;\r\n data[offset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;\r\n }\r\n else {\r\n var grey = greyLevel - dif;\r\n if (grey < 0) {\r\n grey = 0;\r\n }\r\n else if (grey > 255) {\r\n grey = 255;\r\n }\r\n data[offset] = data[offset + 1] = data[offset + 2] = grey;\r\n }\r\n } while (--x);\r\n } while (--y);\r\n };\r\n Factory.addGetterSetter(Node, 'embossStrength', 0.5, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set emboss strength. Use with {@link Konva.Filters.Emboss} filter.\r\n * @name Konva.Node#embossStrength\r\n * @method\r\n * @param {Number} level between 0 and 1. Default is 0.5\r\n * @returns {Number}\r\n */\r\n Factory.addGetterSetter(Node, 'embossWhiteLevel', 0.5, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set emboss white level. Use with {@link Konva.Filters.Emboss} filter.\r\n * @name Konva.Node#embossWhiteLevel\r\n * @method\r\n * @param {Number} embossWhiteLevel between 0 and 1. Default is 0.5\r\n * @returns {Number}\r\n */\r\n Factory.addGetterSetter(Node, 'embossDirection', 'top-left', null, Factory.afterSetFilter);\r\n /**\r\n * get/set emboss direction. Use with {@link Konva.Filters.Emboss} filter.\r\n * @name Konva.Node#embossDirection\r\n * @method\r\n * @param {String} embossDirection can be top-left, top, top-right, right, bottom-right, bottom, bottom-left or left\r\n * The default is top-left\r\n * @returns {String}\r\n */\r\n Factory.addGetterSetter(Node, 'embossBlend', false, null, Factory.afterSetFilter);\r\n /**\r\n * get/set emboss blend. Use with {@link Konva.Filters.Emboss} filter.\r\n * @name Konva.Node#embossBlend\r\n * @method\r\n * @param {Boolean} embossBlend\r\n * @returns {Boolean}\r\n */\n\n function remap(fromValue, fromMin, fromMax, toMin, toMax) {\r\n // Compute the range of the data\r\n var fromRange = fromMax - fromMin, toRange = toMax - toMin, toValue;\r\n // If either range is 0, then the value can only be mapped to 1 value\r\n if (fromRange === 0) {\r\n return toMin + toRange / 2;\r\n }\r\n if (toRange === 0) {\r\n return toMin;\r\n }\r\n // (1) untranslate, (2) unscale, (3) rescale, (4) retranslate\r\n toValue = (fromValue - fromMin) / fromRange;\r\n toValue = toRange * toValue + toMin;\r\n return toValue;\r\n }\r\n /**\r\n * Enhance Filter. Adjusts the colors so that they span the widest\r\n * possible range (ie 0-255). Performs w*h pixel reads and w*h pixel\r\n * writes.\r\n * @function\r\n * @name Enhance\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @author ippo615\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Enhance]);\r\n * node.enhance(0.4);\r\n */\r\n var Enhance = function (imageData) {\r\n var data = imageData.data, nSubPixels = data.length, rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b, i;\r\n // If we are not enhancing anything - don't do any computation\r\n var enhanceAmount = this.enhance();\r\n if (enhanceAmount === 0) {\r\n return;\r\n }\r\n // 1st Pass - find the min and max for each channel:\r\n for (i = 0; i < nSubPixels; i += 4) {\r\n r = data[i + 0];\r\n if (r < rMin) {\r\n rMin = r;\r\n }\r\n else if (r > rMax) {\r\n rMax = r;\r\n }\r\n g = data[i + 1];\r\n if (g < gMin) {\r\n gMin = g;\r\n }\r\n else if (g > gMax) {\r\n gMax = g;\r\n }\r\n b = data[i + 2];\r\n if (b < bMin) {\r\n bMin = b;\r\n }\r\n else if (b > bMax) {\r\n bMax = b;\r\n }\r\n //a = data[i + 3];\r\n //if (a < aMin) { aMin = a; } else\r\n //if (a > aMax) { aMax = a; }\r\n }\r\n // If there is only 1 level - don't remap\r\n if (rMax === rMin) {\r\n rMax = 255;\r\n rMin = 0;\r\n }\r\n if (gMax === gMin) {\r\n gMax = 255;\r\n gMin = 0;\r\n }\r\n if (bMax === bMin) {\r\n bMax = 255;\r\n bMin = 0;\r\n }\r\n var rMid, rGoalMax, rGoalMin, gMid, gGoalMax, gGoalMin, bMid, bGoalMax, bGoalMin;\r\n // If the enhancement is positive - stretch the histogram\r\n if (enhanceAmount > 0) {\r\n rGoalMax = rMax + enhanceAmount * (255 - rMax);\r\n rGoalMin = rMin - enhanceAmount * (rMin - 0);\r\n gGoalMax = gMax + enhanceAmount * (255 - gMax);\r\n gGoalMin = gMin - enhanceAmount * (gMin - 0);\r\n bGoalMax = bMax + enhanceAmount * (255 - bMax);\r\n bGoalMin = bMin - enhanceAmount * (bMin - 0);\r\n // If the enhancement is negative - compress the histogram\r\n }\r\n else {\r\n rMid = (rMax + rMin) * 0.5;\r\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\r\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\r\n gMid = (gMax + gMin) * 0.5;\r\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\r\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\r\n bMid = (bMax + bMin) * 0.5;\r\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\r\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\r\n }\r\n // Pass 2 - remap everything, except the alpha\r\n for (i = 0; i < nSubPixels; i += 4) {\r\n data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\r\n data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\r\n data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\r\n //data[i + 3] = remap(data[i + 3], aMin, aMax, aGoalMin, aGoalMax);\r\n }\r\n };\r\n /**\r\n * get/set enhance. Use with {@link Konva.Filters.Enhance} filter. -1 to 1 values\r\n * @name Konva.Node#enhance\r\n * @method\r\n * @param {Float} amount\r\n * @returns {Float}\r\n */\r\n Factory.addGetterSetter(Node, 'enhance', 0, getNumberValidator(), Factory.afterSetFilter);\n\n /**\r\n * Grayscale Filter\r\n * @function\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Grayscale]);\r\n */\r\n var Grayscale = function (imageData) {\r\n var data = imageData.data, len = data.length, i, brightness;\r\n for (i = 0; i < len; i += 4) {\r\n brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\r\n // red\r\n data[i] = brightness;\r\n // green\r\n data[i + 1] = brightness;\r\n // blue\r\n data[i + 2] = brightness;\r\n }\r\n };\n\n Factory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set hsv hue in degrees. Use with {@link Konva.Filters.HSV} or {@link Konva.Filters.HSL} filter.\r\n * @name Konva.Node#hue\r\n * @method\r\n * @param {Number} hue value between 0 and 359\r\n * @returns {Number}\r\n */\r\n Factory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set hsv saturation. Use with {@link Konva.Filters.HSV} or {@link Konva.Filters.HSL} filter.\r\n * @name Konva.Node#saturation\r\n * @method\r\n * @param {Number} saturation 0 is no change, -1.0 halves the saturation, 1.0 doubles, etc..\r\n * @returns {Number}\r\n */\r\n Factory.addGetterSetter(Node, 'luminance', 0, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set hsl luminance. Use with {@link Konva.Filters.HSL} filter.\r\n * @name Konva.Node#luminance\r\n * @method\r\n * @param {Number} value from -1 to 1\r\n * @returns {Number}\r\n */\r\n /**\r\n * HSL Filter. Adjusts the hue, saturation and luminance (or lightness)\r\n * @function\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @author ippo615\r\n * @example\r\n * image.filters([Konva.Filters.HSL]);\r\n * image.luminance(0.2);\r\n */\r\n var HSL = function (imageData) {\r\n var data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127, i;\r\n // Basis for the technique used:\r\n // http://beesbuzz.biz/code/hsv_color_transforms.php\r\n // V is the value multiplier (1 for none, 2 for double, 0.5 for half)\r\n // S is the saturation multiplier (1 for none, 2 for double, 0.5 for half)\r\n // H is the hue shift in degrees (0 to 360)\r\n // vsu = V*S*cos(H*PI/180);\r\n // vsw = V*S*sin(H*PI/180);\r\n //[ .299V+.701vsu+.168vsw .587V-.587vsu+.330vsw .114V-.114vsu-.497vsw ] [R]\r\n //[ .299V-.299vsu-.328vsw .587V+.413vsu+.035vsw .114V-.114vsu+.292vsw ]*[G]\r\n //[ .299V-.300vsu+1.25vsw .587V-.588vsu-1.05vsw .114V+.886vsu-.203vsw ] [B]\r\n // Precompute the values in the matrix:\r\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\r\n // (result spot)(source spot)\r\n var rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\r\n var gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\r\n var br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\r\n var r, g, b, a;\r\n for (i = 0; i < nPixels; i += 4) {\r\n r = data[i + 0];\r\n g = data[i + 1];\r\n b = data[i + 2];\r\n a = data[i + 3];\r\n data[i + 0] = rr * r + rg * g + rb * b + l;\r\n data[i + 1] = gr * r + gg * g + gb * b + l;\r\n data[i + 2] = br * r + bg * g + bb * b + l;\r\n data[i + 3] = a; // alpha\r\n }\r\n };\n\n /**\r\n * HSV Filter. Adjusts the hue, saturation and value\r\n * @function\r\n * @name HSV\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @author ippo615\r\n * @example\r\n * image.filters([Konva.Filters.HSV]);\r\n * image.value(200);\r\n */\r\n var HSV = function (imageData) {\r\n var data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, i;\r\n // Basis for the technique used:\r\n // http://beesbuzz.biz/code/hsv_color_transforms.php\r\n // V is the value multiplier (1 for none, 2 for double, 0.5 for half)\r\n // S is the saturation multiplier (1 for none, 2 for double, 0.5 for half)\r\n // H is the hue shift in degrees (0 to 360)\r\n // vsu = V*S*cos(H*PI/180);\r\n // vsw = V*S*sin(H*PI/180);\r\n //[ .299V+.701vsu+.168vsw .587V-.587vsu+.330vsw .114V-.114vsu-.497vsw ] [R]\r\n //[ .299V-.299vsu-.328vsw .587V+.413vsu+.035vsw .114V-.114vsu+.292vsw ]*[G]\r\n //[ .299V-.300vsu+1.25vsw .587V-.588vsu-1.05vsw .114V+.886vsu-.203vsw ] [B]\r\n // Precompute the values in the matrix:\r\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\r\n // (result spot)(source spot)\r\n var rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\r\n var gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\r\n var br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\r\n var r, g, b, a;\r\n for (i = 0; i < nPixels; i += 4) {\r\n r = data[i + 0];\r\n g = data[i + 1];\r\n b = data[i + 2];\r\n a = data[i + 3];\r\n data[i + 0] = rr * r + rg * g + rb * b;\r\n data[i + 1] = gr * r + gg * g + gb * b;\r\n data[i + 2] = br * r + bg * g + bb * b;\r\n data[i + 3] = a; // alpha\r\n }\r\n };\r\n Factory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set hsv hue in degrees. Use with {@link Konva.Filters.HSV} or {@link Konva.Filters.HSL} filter.\r\n * @name Konva.Node#hue\r\n * @method\r\n * @param {Number} hue value between 0 and 359\r\n * @returns {Number}\r\n */\r\n Factory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set hsv saturation. Use with {@link Konva.Filters.HSV} or {@link Konva.Filters.HSL} filter.\r\n * @name Konva.Node#saturation\r\n * @method\r\n * @param {Number} saturation 0 is no change, -1.0 halves the saturation, 1.0 doubles, etc..\r\n * @returns {Number}\r\n */\r\n Factory.addGetterSetter(Node, 'value', 0, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set hsv value. Use with {@link Konva.Filters.HSV} filter.\r\n * @name Konva.Node#value\r\n * @method\r\n * @param {Number} value 0 is no change, -1.0 halves the value, 1.0 doubles, etc..\r\n * @returns {Number}\r\n */\n\n /**\r\n * Invert Filter\r\n * @function\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Invert]);\r\n */\r\n var Invert = function (imageData) {\r\n var data = imageData.data, len = data.length, i;\r\n for (i = 0; i < len; i += 4) {\r\n // red\r\n data[i] = 255 - data[i];\r\n // green\r\n data[i + 1] = 255 - data[i + 1];\r\n // blue\r\n data[i + 2] = 255 - data[i + 2];\r\n }\r\n };\n\n /*\r\n * ToPolar Filter. Converts image data to polar coordinates. Performs\r\n * w*h*4 pixel reads and w*h pixel writes. The r axis is placed along\r\n * what would be the y axis and the theta axis along the x axis.\r\n * @function\r\n * @author ippo615\r\n * @memberof Konva.Filters\r\n * @param {ImageData} src, the source image data (what will be transformed)\r\n * @param {ImageData} dst, the destination image data (where it will be saved)\r\n * @param {Object} opt\r\n * @param {Number} [opt.polarCenterX] horizontal location for the center of the circle,\r\n * default is in the middle\r\n * @param {Number} [opt.polarCenterY] vertical location for the center of the circle,\r\n * default is in the middle\r\n */\r\n var ToPolar = function (src, dst, opt) {\r\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, r = 0, g = 0, b = 0, a = 0;\r\n // Find the largest radius\r\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\r\n x = xSize - xMid;\r\n y = ySize - yMid;\r\n rad = Math.sqrt(x * x + y * y);\r\n rMax = rad > rMax ? rad : rMax;\r\n // We'll be uisng y as the radius, and x as the angle (theta=t)\r\n var rSize = ySize, tSize = xSize, radius, theta;\r\n // We want to cover all angles (0-360) and we need to convert to\r\n // radians (*PI/180)\r\n var conversion = ((360 / tSize) * Math.PI) / 180, sin, cos;\r\n // var x1, x2, x1i, x2i, y1, y2, y1i, y2i, scale;\r\n for (theta = 0; theta < tSize; theta += 1) {\r\n sin = Math.sin(theta * conversion);\r\n cos = Math.cos(theta * conversion);\r\n for (radius = 0; radius < rSize; radius += 1) {\r\n x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\r\n y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\r\n i = (y * xSize + x) * 4;\r\n r = srcPixels[i + 0];\r\n g = srcPixels[i + 1];\r\n b = srcPixels[i + 2];\r\n a = srcPixels[i + 3];\r\n // Store it\r\n //i = (theta * xSize + radius) * 4;\r\n i = (theta + radius * xSize) * 4;\r\n dstPixels[i + 0] = r;\r\n dstPixels[i + 1] = g;\r\n dstPixels[i + 2] = b;\r\n dstPixels[i + 3] = a;\r\n }\r\n }\r\n };\r\n /*\r\n * FromPolar Filter. Converts image data from polar coordinates back to rectangular.\r\n * Performs w*h*4 pixel reads and w*h pixel writes.\r\n * @function\r\n * @author ippo615\r\n * @memberof Konva.Filters\r\n * @param {ImageData} src, the source image data (what will be transformed)\r\n * @param {ImageData} dst, the destination image data (where it will be saved)\r\n * @param {Object} opt\r\n * @param {Number} [opt.polarCenterX] horizontal location for the center of the circle,\r\n * default is in the middle\r\n * @param {Number} [opt.polarCenterY] vertical location for the center of the circle,\r\n * default is in the middle\r\n * @param {Number} [opt.polarRotation] amount to rotate the image counterclockwis,\r\n * 0 is no rotation, 360 degrees is a full rotation\r\n */\r\n var FromPolar = function (src, dst, opt) {\r\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, dx, dy, r = 0, g = 0, b = 0, a = 0;\r\n // Find the largest radius\r\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\r\n x = xSize - xMid;\r\n y = ySize - yMid;\r\n rad = Math.sqrt(x * x + y * y);\r\n rMax = rad > rMax ? rad : rMax;\r\n // We'll be uisng x as the radius, and y as the angle (theta=t)\r\n var rSize = ySize, tSize = xSize, radius, theta, phaseShift = opt.polarRotation || 0;\r\n // We need to convert to degrees and we need to make sure\r\n // it's between (0-360)\r\n // var conversion = tSize/360*180/Math.PI;\r\n //var conversion = tSize/360*180/Math.PI;\r\n var x1, y1;\r\n for (x = 0; x < xSize; x += 1) {\r\n for (y = 0; y < ySize; y += 1) {\r\n dx = x - xMid;\r\n dy = y - yMid;\r\n radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\r\n theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\r\n theta = (theta * tSize) / 360;\r\n x1 = Math.floor(theta);\r\n y1 = Math.floor(radius);\r\n i = (y1 * xSize + x1) * 4;\r\n r = srcPixels[i + 0];\r\n g = srcPixels[i + 1];\r\n b = srcPixels[i + 2];\r\n a = srcPixels[i + 3];\r\n // Store it\r\n i = (y * xSize + x) * 4;\r\n dstPixels[i + 0] = r;\r\n dstPixels[i + 1] = g;\r\n dstPixels[i + 2] = b;\r\n dstPixels[i + 3] = a;\r\n }\r\n }\r\n };\r\n //Konva.Filters.ToPolar = Util._FilterWrapDoubleBuffer(ToPolar);\r\n //Konva.Filters.FromPolar = Util._FilterWrapDoubleBuffer(FromPolar);\r\n // create a temporary canvas for working - shared between multiple calls\r\n /*\r\n * Kaleidoscope Filter.\r\n * @function\r\n * @name Kaleidoscope\r\n * @author ippo615\r\n * @memberof Konva.Filters\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Kaleidoscope]);\r\n * node.kaleidoscopePower(3);\r\n * node.kaleidoscopeAngle(45);\r\n */\r\n var Kaleidoscope = function (imageData) {\r\n var xSize = imageData.width, ySize = imageData.height;\r\n var x, y, xoff, i, r, g, b, a, srcPos, dstPos;\r\n var power = Math.round(this.kaleidoscopePower());\r\n var angle = Math.round(this.kaleidoscopeAngle());\r\n var offset = Math.floor((xSize * (angle % 360)) / 360);\r\n if (power < 1) {\r\n return;\r\n }\r\n // Work with our shared buffer canvas\r\n var tempCanvas = Util.createCanvasElement();\r\n tempCanvas.width = xSize;\r\n tempCanvas.height = ySize;\r\n var scratchData = tempCanvas\r\n .getContext('2d')\r\n .getImageData(0, 0, xSize, ySize);\r\n // Convert thhe original to polar coordinates\r\n ToPolar(imageData, scratchData, {\r\n polarCenterX: xSize / 2,\r\n polarCenterY: ySize / 2\r\n });\r\n // Determine how big each section will be, if it's too small\r\n // make it bigger\r\n var minSectionSize = xSize / Math.pow(2, power);\r\n while (minSectionSize <= 8) {\r\n minSectionSize = minSectionSize * 2;\r\n power -= 1;\r\n }\r\n minSectionSize = Math.ceil(minSectionSize);\r\n var sectionSize = minSectionSize;\r\n // Copy the offset region to 0\r\n // Depending on the size of filter and location of the offset we may need\r\n // to copy the section backwards to prevent it from rewriting itself\r\n var xStart = 0, xEnd = sectionSize, xDelta = 1;\r\n if (offset + minSectionSize > xSize) {\r\n xStart = sectionSize;\r\n xEnd = 0;\r\n xDelta = -1;\r\n }\r\n for (y = 0; y < ySize; y += 1) {\r\n for (x = xStart; x !== xEnd; x += xDelta) {\r\n xoff = Math.round(x + offset) % xSize;\r\n srcPos = (xSize * y + xoff) * 4;\r\n r = scratchData.data[srcPos + 0];\r\n g = scratchData.data[srcPos + 1];\r\n b = scratchData.data[srcPos + 2];\r\n a = scratchData.data[srcPos + 3];\r\n dstPos = (xSize * y + x) * 4;\r\n scratchData.data[dstPos + 0] = r;\r\n scratchData.data[dstPos + 1] = g;\r\n scratchData.data[dstPos + 2] = b;\r\n scratchData.data[dstPos + 3] = a;\r\n }\r\n }\r\n // Perform the actual effect\r\n for (y = 0; y < ySize; y += 1) {\r\n sectionSize = Math.floor(minSectionSize);\r\n for (i = 0; i < power; i += 1) {\r\n for (x = 0; x < sectionSize + 1; x += 1) {\r\n srcPos = (xSize * y + x) * 4;\r\n r = scratchData.data[srcPos + 0];\r\n g = scratchData.data[srcPos + 1];\r\n b = scratchData.data[srcPos + 2];\r\n a = scratchData.data[srcPos + 3];\r\n dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\r\n scratchData.data[dstPos + 0] = r;\r\n scratchData.data[dstPos + 1] = g;\r\n scratchData.data[dstPos + 2] = b;\r\n scratchData.data[dstPos + 3] = a;\r\n }\r\n sectionSize *= 2;\r\n }\r\n }\r\n // Convert back from polar coordinates\r\n FromPolar(scratchData, imageData, { polarRotation: 0 });\r\n };\r\n /**\r\n * get/set kaleidoscope power. Use with {@link Konva.Filters.Kaleidoscope} filter.\r\n * @name Konva.Node#kaleidoscopePower\r\n * @method\r\n * @param {Integer} power of kaleidoscope\r\n * @returns {Integer}\r\n */\r\n Factory.addGetterSetter(Node, 'kaleidoscopePower', 2, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set kaleidoscope angle. Use with {@link Konva.Filters.Kaleidoscope} filter.\r\n * @name Konva.Node#kaleidoscopeAngle\r\n * @method\r\n * @param {Integer} degrees\r\n * @returns {Integer}\r\n */\r\n Factory.addGetterSetter(Node, 'kaleidoscopeAngle', 0, getNumberValidator(), Factory.afterSetFilter);\n\n function pixelAt(idata, x, y) {\r\n var idx = (y * idata.width + x) * 4;\r\n var d = [];\r\n d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\r\n return d;\r\n }\r\n function rgbDistance(p1, p2) {\r\n return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\r\n Math.pow(p1[1] - p2[1], 2) +\r\n Math.pow(p1[2] - p2[2], 2));\r\n }\r\n function rgbMean(pTab) {\r\n var m = [0, 0, 0];\r\n for (var i = 0; i < pTab.length; i++) {\r\n m[0] += pTab[i][0];\r\n m[1] += pTab[i][1];\r\n m[2] += pTab[i][2];\r\n }\r\n m[0] /= pTab.length;\r\n m[1] /= pTab.length;\r\n m[2] /= pTab.length;\r\n return m;\r\n }\r\n function backgroundMask(idata, threshold) {\r\n var rgbv_no = pixelAt(idata, 0, 0);\r\n var rgbv_ne = pixelAt(idata, idata.width - 1, 0);\r\n var rgbv_so = pixelAt(idata, 0, idata.height - 1);\r\n var rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\r\n var thres = threshold || 10;\r\n if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\r\n rgbDistance(rgbv_ne, rgbv_se) < thres &&\r\n rgbDistance(rgbv_se, rgbv_so) < thres &&\r\n rgbDistance(rgbv_so, rgbv_no) < thres) {\r\n // Mean color\r\n var mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\r\n // Mask based on color distance\r\n var mask = [];\r\n for (var i = 0; i < idata.width * idata.height; i++) {\r\n var d = rgbDistance(mean, [\r\n idata.data[i * 4],\r\n idata.data[i * 4 + 1],\r\n idata.data[i * 4 + 2]\r\n ]);\r\n mask[i] = d < thres ? 0 : 255;\r\n }\r\n return mask;\r\n }\r\n }\r\n function applyMask(idata, mask) {\r\n for (var i = 0; i < idata.width * idata.height; i++) {\r\n idata.data[4 * i + 3] = mask[i];\r\n }\r\n }\r\n function erodeMask(mask, sw, sh) {\r\n var weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\r\n var side = Math.round(Math.sqrt(weights.length));\r\n var halfSide = Math.floor(side / 2);\r\n var maskResult = [];\r\n for (var y = 0; y < sh; y++) {\r\n for (var x = 0; x < sw; x++) {\r\n var so = y * sw + x;\r\n var a = 0;\r\n for (var cy = 0; cy < side; cy++) {\r\n for (var cx = 0; cx < side; cx++) {\r\n var scy = y + cy - halfSide;\r\n var scx = x + cx - halfSide;\r\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\r\n var srcOff = scy * sw + scx;\r\n var wt = weights[cy * side + cx];\r\n a += mask[srcOff] * wt;\r\n }\r\n }\r\n }\r\n maskResult[so] = a === 255 * 8 ? 255 : 0;\r\n }\r\n }\r\n return maskResult;\r\n }\r\n function dilateMask(mask, sw, sh) {\r\n var weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\r\n var side = Math.round(Math.sqrt(weights.length));\r\n var halfSide = Math.floor(side / 2);\r\n var maskResult = [];\r\n for (var y = 0; y < sh; y++) {\r\n for (var x = 0; x < sw; x++) {\r\n var so = y * sw + x;\r\n var a = 0;\r\n for (var cy = 0; cy < side; cy++) {\r\n for (var cx = 0; cx < side; cx++) {\r\n var scy = y + cy - halfSide;\r\n var scx = x + cx - halfSide;\r\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\r\n var srcOff = scy * sw + scx;\r\n var wt = weights[cy * side + cx];\r\n a += mask[srcOff] * wt;\r\n }\r\n }\r\n }\r\n maskResult[so] = a >= 255 * 4 ? 255 : 0;\r\n }\r\n }\r\n return maskResult;\r\n }\r\n function smoothEdgeMask(mask, sw, sh) {\r\n var weights = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9];\r\n var side = Math.round(Math.sqrt(weights.length));\r\n var halfSide = Math.floor(side / 2);\r\n var maskResult = [];\r\n for (var y = 0; y < sh; y++) {\r\n for (var x = 0; x < sw; x++) {\r\n var so = y * sw + x;\r\n var a = 0;\r\n for (var cy = 0; cy < side; cy++) {\r\n for (var cx = 0; cx < side; cx++) {\r\n var scy = y + cy - halfSide;\r\n var scx = x + cx - halfSide;\r\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\r\n var srcOff = scy * sw + scx;\r\n var wt = weights[cy * side + cx];\r\n a += mask[srcOff] * wt;\r\n }\r\n }\r\n }\r\n maskResult[so] = a;\r\n }\r\n }\r\n return maskResult;\r\n }\r\n /**\r\n * Mask Filter\r\n * @function\r\n * @name Mask\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Mask]);\r\n * node.threshold(200);\r\n */\r\n var Mask = function (imageData) {\r\n // Detect pixels close to the background color\r\n var threshold = this.threshold(), mask = backgroundMask(imageData, threshold);\r\n if (mask) {\r\n // Erode\r\n mask = erodeMask(mask, imageData.width, imageData.height);\r\n // Dilate\r\n mask = dilateMask(mask, imageData.width, imageData.height);\r\n // Gradient\r\n mask = smoothEdgeMask(mask, imageData.width, imageData.height);\r\n // Apply mask\r\n applyMask(imageData, mask);\r\n }\r\n return imageData;\r\n };\r\n Factory.addGetterSetter(Node, 'threshold', 0, getNumberValidator(), Factory.afterSetFilter);\n\n /**\r\n * Noise Filter. Randomly adds or substracts to the color channels\r\n * @function\r\n * @name Noise\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @author ippo615\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Noise]);\r\n * node.noise(0.8);\r\n */\r\n var Noise = function (imageData) {\r\n var amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2, i;\r\n for (i = 0; i < nPixels; i += 4) {\r\n data[i + 0] += half - 2 * half * Math.random();\r\n data[i + 1] += half - 2 * half * Math.random();\r\n data[i + 2] += half - 2 * half * Math.random();\r\n }\r\n };\r\n Factory.addGetterSetter(Node, 'noise', 0.2, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set noise amount. Must be a value between 0 and 1. Use with {@link Konva.Filters.Noise} filter.\r\n * @name Konva.Node#noise\r\n * @method\r\n * @param {Number} noise\r\n * @returns {Number}\r\n */\n\n /*eslint-disable max-depth */\r\n /**\r\n * Pixelate Filter. Averages groups of pixels and redraws\r\n * them as larger pixels\r\n * @function\r\n * @name Pixelate\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @author ippo615\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Pixelate]);\r\n * node.pixelSize(10);\r\n */\r\n var Pixelate = function (imageData) {\r\n var pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, x, y, i, \r\n //pixelsPerBin = pixelSize * pixelSize,\r\n red, green, blue, alpha, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), xBinStart, xBinEnd, yBinStart, yBinEnd, xBin, yBin, pixelsInBin, data = imageData.data;\r\n if (pixelSize <= 0) {\r\n Util.error('pixelSize value can not be <= 0');\r\n return;\r\n }\r\n for (xBin = 0; xBin < nBinsX; xBin += 1) {\r\n for (yBin = 0; yBin < nBinsY; yBin += 1) {\r\n // Initialize the color accumlators to 0\r\n red = 0;\r\n green = 0;\r\n blue = 0;\r\n alpha = 0;\r\n // Determine which pixels are included in this bin\r\n xBinStart = xBin * pixelSize;\r\n xBinEnd = xBinStart + pixelSize;\r\n yBinStart = yBin * pixelSize;\r\n yBinEnd = yBinStart + pixelSize;\r\n // Add all of the pixels to this bin!\r\n pixelsInBin = 0;\r\n for (x = xBinStart; x < xBinEnd; x += 1) {\r\n if (x >= width) {\r\n continue;\r\n }\r\n for (y = yBinStart; y < yBinEnd; y += 1) {\r\n if (y >= height) {\r\n continue;\r\n }\r\n i = (width * y + x) * 4;\r\n red += data[i + 0];\r\n green += data[i + 1];\r\n blue += data[i + 2];\r\n alpha += data[i + 3];\r\n pixelsInBin += 1;\r\n }\r\n }\r\n // Make sure the channels are between 0-255\r\n red = red / pixelsInBin;\r\n green = green / pixelsInBin;\r\n blue = blue / pixelsInBin;\r\n alpha = alpha / pixelsInBin;\r\n // Draw this bin\r\n for (x = xBinStart; x < xBinEnd; x += 1) {\r\n if (x >= width) {\r\n continue;\r\n }\r\n for (y = yBinStart; y < yBinEnd; y += 1) {\r\n if (y >= height) {\r\n continue;\r\n }\r\n i = (width * y + x) * 4;\r\n data[i + 0] = red;\r\n data[i + 1] = green;\r\n data[i + 2] = blue;\r\n data[i + 3] = alpha;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n Factory.addGetterSetter(Node, 'pixelSize', 8, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set pixel size. Use with {@link Konva.Filters.Pixelate} filter.\r\n * @name Konva.Node#pixelSize\r\n * @method\r\n * @param {Integer} pixelSize\r\n * @returns {Integer}\r\n */\n\n /**\r\n * Posterize Filter. Adjusts the channels so that there are no more\r\n * than n different values for that channel. This is also applied\r\n * to the alpha channel.\r\n * @function\r\n * @name Posterize\r\n * @author ippo615\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Posterize]);\r\n * node.levels(0.8); // between 0 and 1\r\n */\r\n var Posterize = function (imageData) {\r\n // level must be between 1 and 255\r\n var levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels, i;\r\n for (i = 0; i < len; i += 1) {\r\n data[i] = Math.floor(data[i] / scale) * scale;\r\n }\r\n };\r\n Factory.addGetterSetter(Node, 'levels', 0.5, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set levels. Must be a number between 0 and 1. Use with {@link Konva.Filters.Posterize} filter.\r\n * @name Konva.Node#levels\r\n * @method\r\n * @param {Number} level between 0 and 1\r\n * @returns {Number}\r\n */\n\n /**\r\n * RGB Filter\r\n * @function\r\n * @name RGB\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @author ippo615\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.RGB]);\r\n * node.blue(120);\r\n * node.green(200);\r\n */\r\n var RGB = function (imageData) {\r\n var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), i, brightness;\r\n for (i = 0; i < nPixels; i += 4) {\r\n brightness =\r\n (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\r\n data[i] = brightness * red; // r\r\n data[i + 1] = brightness * green; // g\r\n data[i + 2] = brightness * blue; // b\r\n data[i + 3] = data[i + 3]; // alpha\r\n }\r\n };\r\n Factory.addGetterSetter(Node, 'red', 0, function (val) {\r\n this._filterUpToDate = false;\r\n if (val > 255) {\r\n return 255;\r\n }\r\n else if (val < 0) {\r\n return 0;\r\n }\r\n else {\r\n return Math.round(val);\r\n }\r\n });\r\n /**\r\n * get/set filter red value. Use with {@link Konva.Filters.RGB} filter.\r\n * @name red\r\n * @method\r\n * @memberof Konva.Node.prototype\r\n * @param {Integer} red value between 0 and 255\r\n * @returns {Integer}\r\n */\r\n Factory.addGetterSetter(Node, 'green', 0, function (val) {\r\n this._filterUpToDate = false;\r\n if (val > 255) {\r\n return 255;\r\n }\r\n else if (val < 0) {\r\n return 0;\r\n }\r\n else {\r\n return Math.round(val);\r\n }\r\n });\r\n /**\r\n * get/set filter green value. Use with {@link Konva.Filters.RGB} filter.\r\n * @name green\r\n * @method\r\n * @memberof Konva.Node.prototype\r\n * @param {Integer} green value between 0 and 255\r\n * @returns {Integer}\r\n */\r\n Factory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\r\n /**\r\n * get/set filter blue value. Use with {@link Konva.Filters.RGB} filter.\r\n * @name blue\r\n * @method\r\n * @memberof Konva.Node.prototype\r\n * @param {Integer} blue value between 0 and 255\r\n * @returns {Integer}\r\n */\n\n /**\r\n * RGBA Filter\r\n * @function\r\n * @name RGBA\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @author codefo\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.RGBA]);\r\n * node.blue(120);\r\n * node.green(200);\r\n * node.alpha(0.3);\r\n */\r\n var RGBA = function (imageData) {\r\n var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha(), i, ia;\r\n for (i = 0; i < nPixels; i += 4) {\r\n ia = 1 - alpha;\r\n data[i] = red * alpha + data[i] * ia; // r\r\n data[i + 1] = green * alpha + data[i + 1] * ia; // g\r\n data[i + 2] = blue * alpha + data[i + 2] * ia; // b\r\n }\r\n };\r\n Factory.addGetterSetter(Node, 'red', 0, function (val) {\r\n this._filterUpToDate = false;\r\n if (val > 255) {\r\n return 255;\r\n }\r\n else if (val < 0) {\r\n return 0;\r\n }\r\n else {\r\n return Math.round(val);\r\n }\r\n });\r\n /**\r\n * get/set filter red value. Use with {@link Konva.Filters.RGBA} filter.\r\n * @name red\r\n * @method\r\n * @memberof Konva.Node.prototype\r\n * @param {Integer} red value between 0 and 255\r\n * @returns {Integer}\r\n */\r\n Factory.addGetterSetter(Node, 'green', 0, function (val) {\r\n this._filterUpToDate = false;\r\n if (val > 255) {\r\n return 255;\r\n }\r\n else if (val < 0) {\r\n return 0;\r\n }\r\n else {\r\n return Math.round(val);\r\n }\r\n });\r\n /**\r\n * get/set filter green value. Use with {@link Konva.Filters.RGBA} filter.\r\n * @name green\r\n * @method\r\n * @memberof Konva.Node.prototype\r\n * @param {Integer} green value between 0 and 255\r\n * @returns {Integer}\r\n */\r\n Factory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\r\n /**\r\n * get/set filter blue value. Use with {@link Konva.Filters.RGBA} filter.\r\n * @name blue\r\n * @method\r\n * @memberof Konva.Node.prototype\r\n * @param {Integer} blue value between 0 and 255\r\n * @returns {Integer}\r\n */\r\n Factory.addGetterSetter(Node, 'alpha', 1, function (val) {\r\n this._filterUpToDate = false;\r\n if (val > 1) {\r\n return 1;\r\n }\r\n else if (val < 0) {\r\n return 0;\r\n }\r\n else {\r\n return val;\r\n }\r\n });\r\n /**\r\n * get/set filter alpha value. Use with {@link Konva.Filters.RGBA} filter.\r\n * @name alpha\r\n * @method\r\n * @memberof Konva.Node.prototype\r\n * @param {Float} alpha value between 0 and 1\r\n * @returns {Float}\r\n */\n\n // based on https://stackoverflow.com/questions/1061093/how-is-a-sepia-tone-created\r\n /**\r\n * @function\r\n * @name Sepia\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Sepia]);\r\n */\r\n var Sepia = function (imageData) {\r\n var data = imageData.data, nPixels = data.length, i, r, g, b;\r\n for (i = 0; i < nPixels; i += 4) {\r\n r = data[i + 0];\r\n g = data[i + 1];\r\n b = data[i + 2];\r\n data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\r\n data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\r\n data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\r\n }\r\n };\n\n /**\r\n * Solarize Filter\r\n * Pixastic Lib - Solarize filter - v0.1.0\r\n * Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.nihilogic.dk/\r\n * License: [http://www.pixastic.com/lib/license.txt]\r\n * @function\r\n * @name Solarize\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Solarize]);\r\n */\r\n var Solarize = function (imageData) {\r\n var data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\r\n do {\r\n var offsetY = (y - 1) * w4;\r\n var x = w;\r\n do {\r\n var offset = offsetY + (x - 1) * 4;\r\n var r = data[offset];\r\n var g = data[offset + 1];\r\n var b = data[offset + 2];\r\n if (r > 127) {\r\n r = 255 - r;\r\n }\r\n if (g > 127) {\r\n g = 255 - g;\r\n }\r\n if (b > 127) {\r\n b = 255 - b;\r\n }\r\n data[offset] = r;\r\n data[offset + 1] = g;\r\n data[offset + 2] = b;\r\n } while (--x);\r\n } while (--y);\r\n };\n\n /**\r\n * Threshold Filter. Pushes any value above the mid point to\r\n * the max and any value below the mid point to the min.\r\n * This affects the alpha channel.\r\n * @function\r\n * @name Threshold\r\n * @memberof Konva.Filters\r\n * @param {Object} imageData\r\n * @author ippo615\r\n * @example\r\n * node.cache();\r\n * node.filters([Konva.Filters.Threshold]);\r\n * node.threshold(0.1);\r\n */\r\n var Threshold = function (imageData) {\r\n var level = this.threshold() * 255, data = imageData.data, len = data.length, i;\r\n for (i = 0; i < len; i += 1) {\r\n data[i] = data[i] < level ? 0 : 255;\r\n }\r\n };\r\n Factory.addGetterSetter(Node, 'threshold', 0.5, getNumberValidator(), Factory.afterSetFilter);\r\n /**\r\n * get/set threshold. Must be a value between 0 and 1. Use with {@link Konva.Filters.Threshold} or {@link Konva.Filters.Mask} filter.\r\n * @name threshold\r\n * @method\r\n * @memberof Konva.Node.prototype\r\n * @param {Number} threshold\r\n * @returns {Number}\r\n */\n\n // we need to import core of the Konva and then extend it with all additional objects\r\n var Konva$2 = Konva$1.Util._assign(Konva$1, {\r\n Arc: Arc,\r\n Arrow: Arrow,\r\n Circle: Circle,\r\n Ellipse: Ellipse,\r\n Image: Image,\r\n Label: Label,\r\n Tag: Tag,\r\n Line: Line,\r\n Path: Path,\r\n Rect: Rect,\r\n RegularPolygon: RegularPolygon,\r\n Ring: Ring,\r\n Sprite: Sprite,\r\n Star: Star,\r\n Text: Text,\r\n TextPath: TextPath,\r\n Transformer: Transformer,\r\n Wedge: Wedge,\r\n /**\r\n * @namespace Filters\r\n * @memberof Konva\r\n */\r\n Filters: {\r\n Blur: Blur,\r\n Brighten: Brighten,\r\n Contrast: Contrast,\r\n Emboss: Emboss,\r\n Enhance: Enhance,\r\n Grayscale: Grayscale,\r\n HSL: HSL,\r\n HSV: HSV,\r\n Invert: Invert,\r\n Kaleidoscope: Kaleidoscope,\r\n Mask: Mask,\r\n Noise: Noise,\r\n Pixelate: Pixelate,\r\n Posterize: Posterize,\r\n RGB: RGB,\r\n RGBA: RGBA,\r\n Sepia: Sepia,\r\n Solarize: Solarize,\r\n Threshold: Threshold\r\n }\r\n });\n\n // main entry for umd build for rollup\n\n return Konva$2;\n\n})));\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a