From b8d4fccbabae3f992d6f861c57860bbb917d8163 Mon Sep 17 00:00:00 2001 From: Hariom Balhara Date: Sat, 19 Oct 2024 02:41:50 +0530 Subject: [PATCH] feat: Rerouting a booking with corrected responses (#17074) * POC working with no TS error * cleanup * Fix query booking * Simplify things * Support rerouting to different event * self-review fixes * Some improvements * add more tests * Remove members relation query * Udits feedback * Dont show CTAs when non-eventTypeRedirectUrl action route is chosen --------- Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> --- .../components/booking/BookingListItem.tsx | 65 +- apps/web/components/dialog/RerouteDialog.tsx | 910 ++++++++++++++++++ .../dialog/__tests__/RerouteDialog.test.tsx | 497 ++++++++++ .../bookings/views/bookings-listing-view.tsx | 2 - .../bookings/views/bookings-single-view.tsx | 20 +- .../icons--calcom-web-linux.png | Bin 223117 -> 226074 bytes apps/web/public/icons/sprite.svg | 9 + apps/web/public/static/locales/en/common.json | 15 + packages/app-store/BookingPageTagManager.tsx | 10 + packages/app-store/routing-forms/TODO.md | 46 +- .../components/FormInputFields.tsx | 38 +- .../routing-forms/lib/RoutingPages.ts | 7 +- .../routing-forms/lib/createFallbackRoute.ts | 3 +- .../routing-forms/lib/processRoute.tsx | 2 +- .../pages/route-builder/[...appPages].tsx | 56 +- .../getUrlSearchParamsToForward.ts | 54 +- .../trpc/__tests__/utils.test.ts | 9 +- .../app-store/routing-forms/trpc/_router.ts | 17 + .../trpc/getResponseWithFormFields.handler.ts | 93 ++ .../app-store/routing-forms/trpc/raqbUtils.ts | 8 +- .../app-store/routing-forms/trpc/utils.ts | 4 +- packages/app-store/routing-forms/zod.ts | 23 +- .../booking-to-mutation-input-mapper.tsx | 4 +- .../features/bookings/lib/handleNewBooking.ts | 20 +- .../lib/handleNewBooking/createBooking.ts | 134 ++- packages/lib/bookingSuccessRedirect.ts | 6 + packages/prisma/schema.prisma | 1 + packages/prisma/zod-utils.ts | 8 +- .../routers/viewer/bookings/get.handler.ts | 13 + packages/ui/components/dialog/Dialog.tsx | 11 +- packages/ui/components/icon/icon-list.mjs | 1 + packages/ui/components/icon/icon-names.ts | 1 + vitest.config.ts | 1 - 33 files changed, 1990 insertions(+), 98 deletions(-) create mode 100644 apps/web/components/dialog/RerouteDialog.tsx create mode 100644 apps/web/components/dialog/__tests__/RerouteDialog.test.tsx create mode 100644 packages/app-store/routing-forms/trpc/getResponseWithFormFields.handler.ts diff --git a/apps/web/components/booking/BookingListItem.tsx b/apps/web/components/booking/BookingListItem.tsx index 5d6bb9272c..81e52af8c0 100644 --- a/apps/web/components/booking/BookingListItem.tsx +++ b/apps/web/components/booking/BookingListItem.tsx @@ -20,6 +20,7 @@ import { BookingStatus, SchedulingType } from "@calcom/prisma/enums"; import { bookingMetadataSchema } from "@calcom/prisma/zod-utils"; import type { RouterInputs, RouterOutputs } from "@calcom/trpc/react"; import { trpc } from "@calcom/trpc/react"; +import type { Ensure } from "@calcom/types/utils"; import type { ActionType } from "@calcom/ui"; import { Badge, @@ -48,6 +49,7 @@ import { AddGuestsDialog } from "@components/dialog/AddGuestsDialog"; import { ChargeCardDialog } from "@components/dialog/ChargeCardDialog"; import { EditLocationDialog } from "@components/dialog/EditLocationDialog"; import { ReassignDialog } from "@components/dialog/ReassignDialog"; +import { RerouteDialog } from "@components/dialog/RerouteDialog"; import { RescheduleDialog } from "@components/dialog/RescheduleDialog"; type BookingListingStatus = RouterInputs["viewer"]["bookings"]["get"]["filters"]["status"]; @@ -65,9 +67,43 @@ type BookingItemProps = BookingItem & { }; }; -function BookingListItem(booking: BookingItemProps) { - const { userId, userTimeZone, userTimeFormat, userEmail } = booking.loggedInUser; +type ParsedBooking = ReturnType; +type TeamEvent = Ensure, "team">; +type TeamEventBooking = Omit & { + eventType: TeamEvent; +}; +type ReroutableBooking = Ensure; +function buildParsedBooking(booking: BookingItemProps) { + // The way we fetch bookings there could be eventType object even without an eventType, but id confirms its existence + const bookingEventType = booking.eventType.id + ? (booking.eventType as Ensure< + typeof booking.eventType, + // It would only ensure that the props are present, if they are optional in the original type. So, it is safe to assert here. + "id" | "length" | "title" | "slug" | "schedulingType" | "team" + >) + : null; + + const bookingMetadata = bookingMetadataSchema.parse(booking.metadata ?? null); + return { + ...booking, + eventType: bookingEventType, + metadata: bookingMetadata, + }; +} + +const isBookingReroutable = (booking: ParsedBooking): booking is ReroutableBooking => { + // We support only team bookings for now for rerouting + // Though `routedFromRoutingFormReponse` could be there for a non-team booking, we don't want to support it for now. + // Let's not support re-routing for a booking without an event-type for now. + // Such a booking has its event-type deleted and there might not be something to reroute to. + return !!booking.routedFromRoutingFormReponse && !!booking.eventType?.team; +}; + +function BookingListItem(booking: BookingItemProps) { + const parsedBooking = buildParsedBooking(booking); + + const { userId, userTimeZone, userTimeFormat, userEmail } = booking.loggedInUser; const { t, i18n: { language }, @@ -107,7 +143,7 @@ function BookingListItem(booking: BookingItemProps) { const paymentAppData = getPaymentAppData(booking.eventType); const location = booking.location as ReturnType; - const locationVideoCallUrl = bookingMetadataSchema.parse(booking?.metadata || {})?.videoCallUrl; + const locationVideoCallUrl = parsedBooking.metadata?.videoCallUrl; const { resolvedTheme, forcedTheme } = useGetTheme(); const hasDarkTheme = !forcedTheme && resolvedTheme === "dark"; @@ -191,6 +227,18 @@ function BookingListItem(booking: BookingItemProps) { setIsOpenRescheduleDialog(true); }, }, + ...(isBookingReroutable(parsedBooking) + ? [ + { + id: "reroute", + label: t("reroute"), + onClick: () => { + setRerouteDialogIsOpen(true); + }, + icon: "waypoints" as const, + }, + ] + : []), { id: "change_location", label: t("edit_location"), @@ -275,6 +323,7 @@ function BookingListItem(booking: BookingItemProps) { const [isOpenReassignDialog, setIsOpenReassignDialog] = useState(false); const [isOpenSetLocationDialog, setIsOpenLocationDialog] = useState(false); const [isOpenAddGuestsDialog, setIsOpenAddGuestsDialog] = useState(false); + const [rerouteDialogIsOpen, setRerouteDialogIsOpen] = useState(false); const setLocationMutation = trpc.viewer.bookings.editLocation.useMutation({ onSuccess: () => { showToast(t("location_updated"), "success"); @@ -360,6 +409,7 @@ function BookingListItem(booking: BookingItemProps) { phoneNumber: attendee.phoneNumber, }; }); + return ( <> + {isBookingReroutable(parsedBooking) && ( + + )} ); } @@ -722,7 +779,7 @@ const FirstAttendee = ({ className=" hover:text-blue-500" href={`mailto:${user.email}`} onClick={(e) => e.stopPropagation()}> - {user.name} + {user.name || user.email} ); }; diff --git a/apps/web/components/dialog/RerouteDialog.tsx b/apps/web/components/dialog/RerouteDialog.tsx new file mode 100644 index 0000000000..afec6be8aa --- /dev/null +++ b/apps/web/components/dialog/RerouteDialog.tsx @@ -0,0 +1,910 @@ +import { useMutation } from "@tanstack/react-query"; +import Link from "next/link"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { useEffect, useCallback } from "react"; +import type { z } from "zod"; + +import FormInputFields, { + FormInputFieldsSkeleton, +} from "@calcom/app-store/routing-forms/components/FormInputFields"; +import { getAbsoluteEventTypeRedirectUrl } from "@calcom/app-store/routing-forms/getEventTypeRedirectUrl"; +import { findMatchingRoute } from "@calcom/app-store/routing-forms/lib/processRoute"; +import { substituteVariables } from "@calcom/app-store/routing-forms/lib/substituteVariables"; +import { getUrlSearchParamsToForwardForReroute } from "@calcom/app-store/routing-forms/pages/routing-link/getUrlSearchParamsToForward"; +import type { FormResponse, LocalRoute } from "@calcom/app-store/routing-forms/types/types"; +import { RouteActionType } from "@calcom/app-store/routing-forms/zod"; +import dayjs from "@calcom/dayjs"; +import { createBooking } from "@calcom/features/bookings/lib/create-booking"; +import { useBookerUrl } from "@calcom/lib/hooks/useBookerUrl"; +import { useLocale } from "@calcom/lib/hooks/useLocale"; +import type { EventType, User, Team, Attendee, Booking as PrismaBooking } from "@calcom/prisma/client"; +import { SchedulingType } from "@calcom/prisma/enums"; +import type { bookingMetadataSchema } from "@calcom/prisma/zod-utils"; +import type { RouterOutputs } from "@calcom/trpc/react"; +import { trpc } from "@calcom/trpc/react"; +import type { Ensure } from "@calcom/types/utils"; +import { Dialog, DialogContent, DialogFooter, DialogHeader } from "@calcom/ui"; +import { Button, Tooltip } from "@calcom/ui"; +import { showToast } from "@calcom/ui/components/toast"; +import useRouterQuery from "@calcom/web/lib/hooks/useRouterQuery"; + +const enum ReroutingStatusEnum { + REROUTING_NOT_INITIATED = "not_initiated", + REROUTING_IN_PROGRESS = "in_progress", + REROUTING_COMPLETE = "complete", + REROUTING_FAILED = "failed", +} + +type ResponseWithForm = RouterOutputs["viewer"]["appRoutingForms"]["getResponseWithFormFields"]; + +type BookingToReroute = Pick & { + routedFromRoutingFormReponse: { + id: number; + }; + startTime: string; + metadata: z.infer; + attendees: Pick[]; + eventType: Pick & { + team: Pick | null; + }; + user: Pick | null; +}; + +type TeamEventTypeBookingToReroute = Omit & { + user: NonNullable; + eventType: Omit & { + team: Ensure, "slug">; + }; +}; + +type RerouteDialogProps = { + isOpenDialog: boolean; + setIsOpenDialog: (isOpen: boolean) => void; + booking: BookingToReroute; +}; + +type ReroutingState = + | { + type: "reschedule_to_same_event_new_tab" | "reschedule_to_different_event_new_tab"; + /** + * UID of the rescheduled booking + */ + newBooking: string | null; + /** + * window for the new tab that is opened for rerouting + */ + reschedulerWindow: Window; + error?: Error; + } + | { + type: "same_timeslot"; + newBooking: string | null; + reschedulerWindow: null; + error?: Error; + }; + +type TeamMemberMatchingAttributeLogic = { + id: number; + name: string | null; + email: string; +}; + +// We can't let user change email identifier field as that would require contact owner information from salesforce which we don't support yet. +// Also, this isn't a requirement as well to allow correcting the email +const fieldsThatCannotBeCorrected = ["email"]; + +function getEventTypeUrlsForTheChosenRoute({ + chosenRoute, + form, + reroutingFormResponses, + currentResponse, + teamMemberIdsMatchingAttributeLogic, + booking, + searchParams, +}: { + form: ResponseWithForm["form"]; + currentResponse: FormResponse; + reroutingFormResponses: Record>; + teamMemberIdsMatchingAttributeLogic: number[] | null; + chosenRoute: LocalRoute | null; + booking: TeamEventTypeBookingToReroute; + searchParams: URLSearchParams; +}) { + if (!chosenRoute) { + return null; + } + + const formFields = form.fields || []; + const routedFromRoutingFormReponseId = booking.routedFromRoutingFormReponse.id; + + const allURLSearchParams = getUrlSearchParamsToForwardForReroute({ + formResponse: currentResponse, + formResponseId: routedFromRoutingFormReponseId, + fields: formFields, + searchParams, + teamMembersMatchingAttributeLogic: teamMemberIdsMatchingAttributeLogic, + attributeRoutingConfig: chosenRoute.attributeRoutingConfig ?? null, + rescheduleUid: booking.uid, + reroutingFormResponses, + }); + + const eventFullSlug = substituteVariables(chosenRoute.action.value, currentResponse, formFields); + const eventBookingAbsoluteUrl = getAbsoluteEventTypeRedirectUrl({ + form, + eventTypeRedirectUrl: eventFullSlug, + allURLSearchParams, + isEmbed: false, + }); + + return { eventFullSlug, eventBookingAbsoluteUrl }; +} + +function rescheduleInNewTab({ url }: { url: string }) { + const reschedulerWindow = window.open(url, "_blank"); + + if (!reschedulerWindow) { + throw new Error("Failed to open new tab"); + } + + return reschedulerWindow; +} + +const getFullSlugForEvent = ( + eventType: Pick +) => { + return `team/${eventType.team.slug}/${eventType.slug}`; +}; + +function isBookingTimeslotInPast(booking: BookingToReroute) { + return dayjs(booking.startTime).isBefore(dayjs()); +} + +const useReroutingState = ({ isOpenDialog }: Pick) => { + const [value, setValue] = useState(null); + const state = value; + + // If dialog is closed but the rerouting window is still open, close it + if (!isOpenDialog && state?.reschedulerWindow) { + state.reschedulerWindow.close(); + setValue(null); + } + + useEffect(() => { + const checkInterval = setInterval(() => { + if (state?.reschedulerWindow?.closed) { + // Ensure that render happens again + setValue(null); + clearInterval(checkInterval); + } + }, 1); + + return () => clearInterval(checkInterval); + }, [value, setValue]); + + const status = (() => { + if (!value) return ReroutingStatusEnum.REROUTING_NOT_INITIATED; + if (value.error) return ReroutingStatusEnum.REROUTING_FAILED; + if (!!value.newBooking) return ReroutingStatusEnum.REROUTING_COMPLETE; + return ReroutingStatusEnum.REROUTING_IN_PROGRESS; + })(); + + return { value: state, setValue, status }; +}; + +// const useUpdateIsReroutingQueryParam = ({ isOpenDialog }: { isOpenDialog: boolean }) => { +// const { setQuery: setIsReroutingQuery } = useRouterQuery("isRerouting"); +// useEffect(() => { +// if (isOpenDialog) { +// setIsReroutingQuery("true"); +// } else { +// setIsReroutingQuery(undefined); +// } +// }, [isOpenDialog]); +// }; + +const gotoBookingPage = ({ + booking, + router, +}: { + booking: Pick; + router: ReturnType; +}) => { + // TODO: Do we need to send other params as well? + router.push(`/booking/${booking.uid}?cal.rerouting=true`); +}; + +const useEventListeners = ({ reroutingState }: { reroutingState: ReturnType }) => { + const router = useRouter(); + const { t } = useLocale(); + const messageListener = useCallback( + (event: MessageEvent) => { + if (event.data.type !== "CAL:rescheduleBookingSuccessfulV2") { + return; + } + const calEventData = event.data.data; + showToast(t("rerouted_booking_successfully_redirecting_to_booking_page"), "success"); + if (!calEventData.uid) { + console.error("Booking UID is not there"); + throw new Error(t("something_went_wrong")); + } + const newBookingId = calEventData.uid; + reroutingState.setValue((prev) => { + if (!prev) return null; + return { ...prev, newBooking: newBookingId }; + }); + gotoBookingPage({ router, booking: { uid: newBookingId } }); + reroutingState.value?.reschedulerWindow?.close(); + }, + [reroutingState, reroutingState.value?.reschedulerWindow] + ); + + // Make sure to close the rescheduler window when this tab closes/reloads + const beforeUnloadListener = useCallback(() => { + reroutingState.value?.reschedulerWindow?.close(); + reroutingState.setValue(null); + }, [reroutingState.value?.reschedulerWindow]); + + // Ensure listeners are added once the component is mounted and removed once the component is unmounted + useEffect(() => { + window.addEventListener("message", messageListener); + window.addEventListener("beforeunload", beforeUnloadListener); + return () => { + window.removeEventListener("message", messageListener); + window.removeEventListener("beforeunload", beforeUnloadListener); + }; + // messageListener and beforeUnloadListener are memoized using useCallback, so the reference remains stable + }, [messageListener, beforeUnloadListener]); +}; + +const NewRoutingManager = ({ + chosenRoute, + booking, + form, + currentResponse, + teamMembersMatchingAttributeLogic, + reroutingState, +}: { + chosenRoute: LocalRoute; + booking: TeamEventTypeBookingToReroute; + form: ResponseWithForm["form"]; + currentResponse: FormResponse; + teamMembersMatchingAttributeLogic: { + isPending: boolean; + data: TeamMemberMatchingAttributeLogic[] | null; + }; + reroutingState: ReturnType; +}) => { + const { t } = useLocale(); + const router = useRouter(); + const bookerUrl = useBookerUrl(); + const teamMemberIdsMatchingAttributeLogic = + teamMembersMatchingAttributeLogic?.data?.map((member) => member.id) || null; + const routedFromRoutingFormReponseId = booking.routedFromRoutingFormReponse.id; + + const bookingEventType = booking.eventType; + + // Provide a reason for rescheduling that can be customized by user in the future + // const rescheduleReason = "Rerouted"; + const isRoundRobinScheduling = bookingEventType.schedulingType === SchedulingType.ROUND_ROBIN; + const reroutingFormResponses = Object.fromEntries( + Object.entries(currentResponse).map(([key, response]) => [key, { value: response.value }]) + ); + + const chosenEventUrls = getEventTypeUrlsForTheChosenRoute({ + chosenRoute, + form, + reroutingFormResponses, + teamMemberIdsMatchingAttributeLogic, + booking, + currentResponse, + searchParams: new URLSearchParams({ + // rescheduleReason + }), + }); + + const chosenEventTypeId = chosenRoute.action.eventTypeId; + const enableChosenEventTypeQuery = !!chosenEventTypeId; + // TODO: Get bare minimum eventType details + const { data: chosenEventTypeData, isPending: isChosenEventTypePending } = + trpc.viewer.eventTypes.get.useQuery( + // enabled prop ensures that the query is not run if the chosenEventTypeId is not there + { id: chosenEventTypeId! }, + { + enabled: enableChosenEventTypeQuery, + } + ); + + // isPending of the query is true even if enabled=false and no request was sent. So, identify if the request is actually in progress + const isChosenEventTypeRequestInProgress = enableChosenEventTypeQuery ? isChosenEventTypePending : false; + + const chosenEventType = chosenEventTypeData?.eventType; + + const currentBookingEventFullSlug = getFullSlugForEvent(booking.eventType); + const isReroutingToDifferentEvent = currentBookingEventFullSlug !== chosenEventUrls?.eventFullSlug; + + const createBookingMutation = useMutation({ + mutationFn: createBooking, + onSuccess: (booking) => { + showToast(t("rerouted_booking_successfully_redirecting_to_booking_page"), "success"); + if (!booking.uid) { + console.error("Booking UID is not there"); + throw new Error(t("something_went_wrong")); + } + + const newBookingId = booking.uid; + reroutingState.setValue((prev) => { + if (!prev) return null; + return { + ...prev, + newBooking: newBookingId, + }; + }); + gotoBookingPage({ router, booking: { uid: newBookingId } }); + }, + onError: (err, _, ctx) => { + reroutingState.setValue({ + error: err, + newBooking: null, + type: "same_timeslot", + reschedulerWindow: null, + }); + showToast( + "Looks like the timeslot is not available for the new team members. Try rescheduling with different timeslot", + "error" + ); + }, + }); + + useEventListeners({ reroutingState }); + + if (!chosenRoute) return null; + + const isReroutingInNewTab = + reroutingState.value?.type === "reschedule_to_same_event_new_tab" || + reroutingState.value?.type === "reschedule_to_different_event_new_tab"; + + return ( +
+

{t("new_routing_status")}

+
+ {reroutingState.status === ReroutingStatusEnum.REROUTING_NOT_INITIATED && reroutingPreview()} + {(reroutingState.status === ReroutingStatusEnum.REROUTING_NOT_INITIATED || !isReroutingInNewTab) && + reroutingCTAs()} + {isReroutingInNewTab && newTabReroutingStatus()} +
+
+ ); + + function rescheduleToSameTimeslotOfEvent({ + eventType: { id: eventTypeId, slug: eventTypeSlug, team: eventTypeTeam, length: eventTypeLength }, + }: { + eventType: Pick & { + team: { + slug: string | null; + } | null; + }; + }) { + if (!chosenRoute) { + console.error("Chosen route must be there for rerouting"); + throw new Error(t("something_went_wrong")); + } + + if (!eventTypeTeam?.slug) { + console.error("Event type team slug must be there for rerouting"); + throw new Error(t("something_went_wrong")); + } + + const teamSlug = eventTypeTeam.slug; + + if (isBookingTimeslotInPast(booking)) { + showToast("You cannot reschedule to a past timeslot", "error"); + return; + } + const booker = booking.attendees[0]; + const getFieldsThatRemainSame = () => { + return { + responses: booking.responses, + timeZone: booker.timeZone, + language: booker.locale || "en", + metadata: booking.metadata || {}, + ...getBookingSeatFields(), + ...getHashedLinkFields(), + }; + + function getBookingSeatFields() { + // During rerouting, do all the seats need to be re-routed? + // Let's not support re-routing for booking with seats for now. + return { + // bookingUid: booking.uid, + // seatReferenceUid: booking.eventType, + }; + } + + function getHashedLinkFields() { + // After booking hashedLink is deleted, so I don't believe we need to return anything here. + // Also, Rerouting is for a booking that was routed and routing doesn't involve hashed link even if it is enabled for the event. + return {}; + } + }; + + const getFieldFromEventTypeThatRemainSame = () => { + return { + user: teamSlug, + eventTypeId: eventTypeId, + eventTypeSlug: eventTypeSlug, + }; + }; + + const getTimeslotFields = () => { + return { + // It is possible that EvenType changed its duration, so we would consider that as well. + start: dayjs(booking.startTime).format(), + end: dayjs(booking.startTime) + // Defaults to the default event length in case no custom duration is set. + .add(eventTypeLength, "minute") + .format(), + }; + }; + + const getRoutingFormRelatedFields = () => { + return { + routedTeamMemberIds: teamMemberIdsMatchingAttributeLogic, + routingFormResponseId: routedFromRoutingFormReponseId, + skipContactOwner: chosenRoute.attributeRoutingConfig?.skipContactOwner, + }; + }; + + const getSalesforceContactOwnerFields = () => { + // Email field won't need to be corrected, so we don't need to support it. + return {}; + }; + + // TODO: Long term, we should refactor handleNewBooking and use a different route specific for this purpose, + createBookingMutation.mutate({ + rescheduleUid: booking.uid, + // rescheduleReason, + reroutingFormResponses: reroutingFormResponses, + ...getTimeslotFields(), + ...getFieldsThatRemainSame(), + ...getFieldFromEventTypeThatRemainSame(), + ...getRoutingFormRelatedFields(), + ...getSalesforceContactOwnerFields(), + }); + + reroutingState.setValue({ + newBooking: null, + type: "same_timeslot", + reschedulerWindow: null, + }); + } + + function rescheduleToSameTimeslotOfSameEvent() { + return rescheduleToSameTimeslotOfEvent({ + eventType: booking.eventType, + }); + } + + function rescheduleToSameTimeslotOfChosenEvent() { + if (!chosenEventTypeId && isReroutingToDifferentEvent) { + showToast( + "We don't have ID for the new event. Please go to the Routing Form and save it again.", + "error" + ); + return; + } + if (!chosenEventType) { + // There are disabled/loading state on button to ensure that this function is not called if chosenEventType is not there + console.error("Chosen event type must be there for rerouting"); + throw new Error(t("something_went_wrong")); + } + + return rescheduleToSameTimeslotOfEvent({ + eventType: chosenEventType, + }); + } + + function rescheduleSameEventInNewTab() { + if (!chosenEventUrls?.eventBookingAbsoluteUrl) { + console.error("URL must be there for opening new tab"); + throw new Error(t("something_went_wrong")); + } + + const reschedulerWindow = rescheduleInNewTab({ + url: chosenEventUrls.eventBookingAbsoluteUrl, + }); + + reroutingState.setValue({ + type: "reschedule_to_same_event_new_tab", + reschedulerWindow, + newBooking: null, + }); + } + + function rescheduleDifferentEventInNewTab() { + if (!chosenEventUrls?.eventBookingAbsoluteUrl) { + console.error("URL must be there for opening new tab"); + throw new Error(t("something_went_wrong")); + } + const reschedulerWindow = rescheduleInNewTab({ + url: chosenEventUrls.eventBookingAbsoluteUrl, + }); + + console.log("SETTING NEW VALUE", { + type: "reschedule_to_different_event_new_tab", + reschedulerWindow, + newBooking: null, + }); + reroutingState.setValue({ + type: "reschedule_to_different_event_new_tab", + reschedulerWindow, + newBooking: null, + }); + + console.log("VALUE NOW", JSON.stringify(reroutingState)); + } + + function reroutingPreview() { + if (chosenRoute.action.type === RouteActionType.CustomPageMessage) { + return {t("reroute_preview_custom_message")}; + } + if (chosenRoute.action.type === RouteActionType.ExternalRedirectUrl) { + return ( + + {t("reroute_preview_external_redirect", { externalUrl: chosenRoute.action.value })} + + ); + } + if (chosenRoute.action.type === RouteActionType.EventTypeRedirectUrl) { + // Computed value for eventTypeSlugToRedirect + const eventTypeSlugToRedirect = + chosenRoute.action.type === RouteActionType.EventTypeRedirectUrl ? chosenRoute.action.value : null; + + if (!eventTypeSlugToRedirect) { + console.error("Event type slug to redirect must be there if action is EventTypeRedirectUrl"); + throw new Error(t("something_went_wrong")); + } + return ( +
+ + {t("event_type")}:{" "} + + {eventTypeSlugToRedirect} + + + + + + {isRoundRobinScheduling ? t("reroute_preview_possible_host") : t("hosts")}: + + {" "} + {bookingHosts()} + +
+ ); + } + + function bookingHosts() { + if (teamMembersMatchingAttributeLogic.isPending) return t("loading"); + + const hostEmails = teamMembersMatchingAttributeLogic.data?.map((member) => member.email).join(", "); + return hostEmails || t("no_matching_members"); + } + return null; + } + + function reroutingCTAs() { + if(chosenRoute.action.type !== RouteActionType.EventTypeRedirectUrl) { + // There are no actions to perform if the new chosen route isn't an event type redirect + return null + } + const shouldDisableCTAs = teamMembersMatchingAttributeLogic.isPending || createBookingMutation.isPending; + return ( +
+ {!isReroutingToDifferentEvent ? ( + + ) : ( + + )} + {!isReroutingToDifferentEvent ? ( + + ) : ( + + )} +
+ ); + } + + function newTabReroutingStatus() { + if (reroutingState.status !== ReroutingStatusEnum.REROUTING_IN_PROGRESS) { + return null; + } + return ( +
+ + Continue with rerouting in the new{" "} + reroutingState.value?.reschedulerWindow?.focus()}> + tab + + +
+ ); + } +}; + +const CurrentRoutingStatus = ({ + booking, +}: { + booking: Pick; +}) => { + const fullSlug = getFullSlugForEvent(booking.eventType); + const { t } = useLocale(); + const bookerUrl = useBookerUrl(); + if (!fullSlug) return null; + return ( +
+

{t("current_routing_status")}

+
+ + {t("event_type")}:{" "} + + {fullSlug} + + + + {t("organizer")}: {booking.user.email} + + + {t("attendees")}:{" "} + {booking.attendees.map((attendee) => attendee.email).join(", ")} + +
+
+ ); +}; + +const RerouteDialogContentAndFooter = ({ + booking, + isOpenDialog, + setIsOpenDialog, +}: Pick & { + booking: TeamEventTypeBookingToReroute; +}) => { + const { data: responseWithForm, isPending: isRoutingFormLoading } = + trpc.viewer.appRoutingForms.getResponseWithFormFields.useQuery({ + formResponseId: booking.routedFromRoutingFormReponse.id, + }); + + const { t } = useLocale(); + // useUpdateIsReroutingQueryParam({ isOpenDialog }); + if (isRoutingFormLoading) + return ( + <> + + + + + + + ); + + if (!responseWithForm) return
{t("something_went_wrong")}
; + + return ( + + ); +}; + +const RerouteDialogContentAndFooterWithFormResponse = ({ + responseWithForm, + booking, + isOpenDialog, + setIsOpenDialog, +}: Pick & { + responseWithForm: ResponseWithForm; + booking: TeamEventTypeBookingToReroute; +}) => { + const form = responseWithForm.form; + const { t } = useLocale(); + const router = useRouter(); + const [responseFromOrganizer, setResponseFromOrganizer] = useState({}); + const isResponseFromOrganizerUnpopulated = Object.keys(responseFromOrganizer).length === 0; + const currentResponse = isResponseFromOrganizerUnpopulated + ? responseWithForm.response + : responseFromOrganizer; + const [chosenRoute, setChosenRoute] = useState(null); + + const reroutingState = useReroutingState({ + isOpenDialog, + }); + + const [teamMembersMatchingAttributeLogic, setTeamMembersMatchingAttributeLogic] = useState< + | { + id: number; + name: string | null; + email: string; + }[] + | null + >([]); + + const findTeamMembersMatchingAttributeLogicMutation = + trpc.viewer.appRoutingForms.findTeamMembersMatchingAttributeLogic.useMutation({ + onSuccess(data) { + setTeamMembersMatchingAttributeLogic(data); + }, + }); + + function verifyRoute() { + // Reset all states + reroutingState.setValue(null); + setTeamMembersMatchingAttributeLogic(null); + + const route = findMatchingRoute({ + form, + response: currentResponse, + }); + + setChosenRoute(route || null); + + if (!route) return; + + findTeamMembersMatchingAttributeLogicMutation.mutate({ + formId: form.id, + response: currentResponse, + routeId: route.id, + }); + } + + return ( +
+
+ + {form.name} + + +
+ + {chosenRoute && ( + + )} +
+
+ {renderFooter()} +
+ ); + + function renderFooter() { + if (reroutingState.status !== ReroutingStatusEnum.REROUTING_COMPLETE) { + return ( + + + + + ); + } + + if (reroutingState.status === ReroutingStatusEnum.REROUTING_COMPLETE) { + return ( + + + + ); + } + return null; + } +}; + +export const RerouteDialog = ({ isOpenDialog, setIsOpenDialog, booking }: RerouteDialogProps) => { + const { t } = useLocale(); + const bookingEventType = booking.eventType; + + if (!bookingEventType.team) { + console.error("Only team event can be re-routed"); + throw new Error(t("something_went_wrong")); + } + + if (!bookingEventType.team.slug) { + console.error("Team slug must be there for rerouting"); + throw new Error(t("something_went_wrong")); + } + + if (!booking.user) { + // Not a hard requirement, but better to be strict with data. + console.error("Booking must have a user"); + throw new Error(t("something_went_wrong")); + } + + const teamEventTypeBooking = { + ...booking, + user: booking.user, + eventType: { + ...bookingEventType, + team: { + ...bookingEventType.team, + slug: bookingEventType.team.slug, + }, + }, + }; + + return ( + + + + + + + ); +}; diff --git a/apps/web/components/dialog/__tests__/RerouteDialog.test.tsx b/apps/web/components/dialog/__tests__/RerouteDialog.test.tsx new file mode 100644 index 0000000000..0cebf9ecee --- /dev/null +++ b/apps/web/components/dialog/__tests__/RerouteDialog.test.tsx @@ -0,0 +1,497 @@ +import { act, fireEvent, render, screen, waitFor } from "@testing-library/react"; +import { useRouter } from "next/navigation"; +import { vi } from "vitest"; + +import { RouteActionType } from "@calcom/app-store/routing-forms/zod"; +import { BookingStatus, SchedulingType } from "@calcom/prisma/enums"; + +import { RerouteDialog } from "../RerouteDialog"; + +const mockRouter = { + push: vi.fn((path: string) => { + return; + }), +}; + +vi.mock("next/navigation", async (importOriginal) => { + const actual = await importOriginal(); + return { + ...actual, + useRouter: vi.fn(() => mockRouter), + }; +}); + +vi.mock("@calcom/app-store/routing-forms/lib/processRoute", () => ({ + findMatchingRoute: vi.fn(({ form, response }) => { + return form.routes.find((route: any) => route.__testMatching); + }), +})); + +const fakeNewTabWindow = { + close: vi.fn(), +}; + +const mockOpen = vi.fn((_url: string) => { + return fakeNewTabWindow; +}); + +vi.stubGlobal("open", mockOpen); + +vi.mock("@calcom/app-store/routing-forms/components/FormInputFields", () => ({ + default: vi.fn(({ response, form, setResponse, disabledFields }) => { + return ( +
+ {form.fields?.map((field: any) => ( +
+ +
{response[field.id]?.value}
+
+ ))} +
{disabledFields.join(", ")}
+ +
+ ); + }), + FormInputFieldsSkeleton: vi.fn(() =>
), +})); + +vi.mock("@calcom/lib/hooks/useLocale", () => ({ + useLocale: vi.fn(() => ({ t: (key: string) => key })), +})); + +vi.mock("@calcom/web/lib/hooks/useRouterQuery", () => ({ + default: vi.fn(() => { + return { + setQuery: vi.fn(), + }; + }), +})); + +vi.mock("@calcom/ui", async (importOriginal) => { + // @ts-ignore + const actual = await importOriginal("@calcom/ui"); + return { + ...actual, + Tooltip: vi.fn(({ children }) =>
{children}
), + }; +}); + +vi.mock("@calcom/trpc/react", () => ({ + trpc: { + viewer: { + appRoutingForms: { + getResponseWithFormFields: { + useQuery: vi.fn(() => ({ + data: { + form: { + id: "form-id", + name: "Test Form", + fields: [ + { + id: "company-size", + label: "Company Size", + type: "select", + options: [ + { label: "Small", value: "small" }, + { label: "Medium", value: "medium" }, + { label: "Large", value: "large" }, + ], + }, + { + id: "country", + label: "Country", + type: "select", + options: [ + { label: "USA", value: "usa" }, + { label: "Canada", value: "canada" }, + { label: "UK", value: "uk" }, + ], + }, + { + id: "email", + label: "Email", + type: "email", + required: true, + }, + ], + routes: [ + { + id: "mock-route-id", + action: { + eventTypeId: 123, + type: RouteActionType.EventTypeRedirectUrl, + value: "team/test-team/new-test-event", + }, + __testMatching: true, + }, + { + id: "fallback-route", + isFallback: true, + action: { + type: RouteActionType.CustomPageMessage, + value: "456", + }, + __testMatching: false, + }, + ], + }, + response: { + "company-size": { + label: "Company Size", + value: "small", + }, + country: { + label: "Country", + value: "usa", + }, + }, + }, + isPending: false, + })), + }, + findTeamMembersMatchingAttributeLogic: { + useMutation: vi.fn(({ onSuccess }) => { + return { + mutate: vi.fn(() => { + onSuccess([ + { + id: 1, + name: "Matching User 1", + email: "matching-user-1@example.com", + }, + ]); + }), + }; + }), + }, + }, + eventTypes: { + get: { + useQuery: vi.fn(() => ({ + data: { + eventType: { + id: "123", + title: "Mocked Event Type", + slug: "mocked-event-type", + length: 30, + schedulingType: "ROUND_ROBIN", + team: { slug: "mocked-team" }, + }, + }, + isPending: false, + })), + }, + }, + }, + }, +})); + +let mockMutateFn = vi.fn(({ __testOnSuccess }) => { + __testOnSuccess({ + uid: "RESCHEDULED_BOOKING_UID_SAME_TIMESLOT", + }); +}); + +vi.mock("@tanstack/react-query", () => ({ + useMutation: vi.fn(({ onSuccess }) => { + return { + mutate: vi.fn((payload) => { + mockMutateFn({ + ...payload, + __testOnSuccess: onSuccess, + }); + }), + isLoading: false, + isError: false, + error: null, + onSuccess: onSuccess, + }; + }), +})); + +async function mockMessageFromOpenedTab({ type, data }: { type: string; data: any }) { + const messageReceivedPromise = new Promise((resolve) => { + window.addEventListener("message", () => { + resolve(true); + }); + }); + window.postMessage( + { + type, + data, + }, + "*" + ); + + return messageReceivedPromise; +} + +function correctResponses() { + fireEvent.click(screen.getByTestId("mock-form-update-response-button")); +} + +function expectEventTypeInfoInCurrentRouting({ + eventTypeText, + eventTypeHref, +}: { + eventTypeText: string; + eventTypeHref: string; +}) { + const eventTypeEl = screen.getByTestId("current-routing-status-event-type"); + expect(eventTypeEl).toHaveTextContent(eventTypeText); + expect(eventTypeEl.querySelector("a")).toHaveAttribute("href", eventTypeHref); +} + +function expectEventTypeInfoInReroutePreview({ + eventTypeText, + eventTypeHref, +}: { + eventTypeText: string; + eventTypeHref: string; +}) { + const eventTypeEl = screen.getByTestId("reroute-preview-event-type"); + expect(eventTypeEl).toHaveTextContent(eventTypeText); + expect(eventTypeEl.querySelector("a")).toHaveAttribute("href", eventTypeHref); +} + +function expectOrganizerInfoInCurrentRouting({ organizerText }: { organizerText: string }) { + const organizerEl = screen.getByTestId("current-routing-status-organizer"); + expect(organizerEl).toHaveTextContent(organizerText); +} + +function expectAttendeesInfoInCurrentRouting({ attendeesText }: { attendeesText: string }) { + const attendeesEl = screen.getByTestId("current-routing-status-attendees"); + expect(attendeesEl).toHaveTextContent(attendeesText); +} + +const mockBooking = { + id: 1, + uid: "original-booking-uid", + title: "Test Booking", + startTime: new Date(new Date().setDate(new Date().getDate() + 1)).toISOString(), + metadata: {}, + responses: {}, + attendees: [{ email: "attendee@example.com", name: "Attendee", timeZone: "UTC", locale: "en" }], + eventType: { + id: 1, + slug: "test-event", + team: { slug: "test-team" }, + length: 60, + schedulingType: SchedulingType.ROUND_ROBIN, + title: "Test Event", + }, + user: { id: 1, name: "Test User", email: "user@example.com" }, + routedFromRoutingFormReponse: { id: 1 }, + status: BookingStatus.ACCEPTED, // Add this line +}; + +const buildBooking = () => { + return { + ...mockBooking, + }; +}; + +describe("RerouteDialog", () => { + const mockSetIsOpenDialog = vi.fn(); + + beforeEach(() => { + vi.clearAllMocks(); + }); + + test("renders the dialog when open", () => { + render(); + + expect(screen.getByText("reroute_booking")).toBeInTheDocument(); + expect(screen.getByText("reroute_booking_description")).toBeInTheDocument(); + }); + + test("doesn't render the dialog when closed", () => { + render( + + ); + + expect(screen.queryByText("reroute_booking")).not.toBeInTheDocument(); + }); + + test("displays current routing status", async () => { + render(); + expect(screen.getByText("current_routing_status")).toBeInTheDocument(); + + expectEventTypeInfoInCurrentRouting({ + eventTypeText: "team/test-team/test-event", + eventTypeHref: "https://cal.com/team/test-team/test-event", + }); + expectOrganizerInfoInCurrentRouting({ + organizerText: "user@example.com", + }); + expectAttendeesInfoInCurrentRouting({ + attendeesText: "attendee@example.com", + }); + // screen.logTestingPlaygroundURL() + }); + + test("verify_new_route button is disabled when form fields are not filled", async () => { + render(); + expect(screen.getByText("verify_new_route")).toBeDisabled(); + correctResponses(); + expect(screen.getByText("verify_new_route")).toBeEnabled(); + }); + + test("disabledFields are passed to FormInputFields with value ['email'] - email field is disabled", async () => { + render(); + expect(screen.getByTestId("mock-form-field-disabled-fields-identifiers")).toHaveTextContent(/^email$/); + }); + + test("Expect form fields and name to be rendered", async () => { + render(); + expect(screen.getByText("Test Form")).toBeInTheDocument(); + expect(screen.getByTestId("mock-form-field-company-size-label")).toHaveTextContent("Company Size"); + expect(screen.getByTestId("mock-form-field-company-size-value")).toHaveTextContent("small"); + expect(screen.getByTestId("mock-form-field-country-label")).toHaveTextContent("Country"); + expect(screen.getByTestId("mock-form-field-country-value")).toHaveTextContent("usa"); + }); + + test("cancel button closes the dialog", async () => { + render(); + + expect(screen.getByText("cancel")).toBeInTheDocument(); + + fireEvent.click(screen.getByText("cancel")); + expect(mockSetIsOpenDialog).toHaveBeenCalledWith(false); + }); + + describe("New Routing tests", () => { + test("when verify_new_route is clicked, the form is submitted", async () => { + render( + + ); + // Enables verify_new_route button + correctResponses(); + fireEvent.click(screen.getByText("verify_new_route")); + + expectEventTypeInfoInReroutePreview({ + eventTypeText: "team/test-team/new-test-event", + eventTypeHref: "https://cal.com/team/test-team/new-test-event", + }); + expect(screen.getByText("verify_new_route")).toBeEnabled(); + expect(screen.getByTestId("reroute-preview-hosts")).toHaveTextContent("reroute_preview_possible_host"); + expect(screen.getByTestId("reroute-preview-hosts")).toHaveTextContent("matching-user-1@example.com"); + + expect(screen.getByText("reschedule_to_the_new_event_with_different_timeslot")).toBeInTheDocument(); + expect(screen.getByText("reschedule_with_same_timeslot_of_new_event")).toBeInTheDocument(); + }); + + describe("New tab rescheduling", () => { + test("new tab is closed when new booking is rerouted", async () => { + render( + + ); + // Enables verify_new_route button + correctResponses(); + clickVerifyNewRouteButton(); + clickRescheduleToTheNewEventWithDifferentTimeslotButton(); + await mockMessageFromOpenedTab({ + type: "CAL:rescheduleBookingSuccessfulV2", + data: { + uid: "RESCHEDULED_BOOKING_UID_NEW_TAB", + }, + }); + + const rescheduleTabUrl = mockOpen.mock.calls[0][0] as unknown as string; + const rescheduleTabUrlObject = new URL(rescheduleTabUrl, "http://mockcal.com"); + expect(Object.fromEntries(rescheduleTabUrlObject.searchParams.entries())).toEqual( + expect.objectContaining({ + rescheduleUid: mockBooking.uid, + "cal.rerouting": "true", + "cal.reroutingFormResponses": JSON.stringify({ + "company-size": { + value: "small", + }, + country: { + value: "usa", + }, + }), + }) + ); + expect(fakeNewTabWindow.close).toHaveBeenCalled(); + expectToBeNavigatedToBookingPage({ + booking: { + uid: "RESCHEDULED_BOOKING_UID_NEW_TAB", + }, + }); + }); + + test("Rescheduling with same timeslot works", async () => { + render( + + ); + // Enables verify_new_route button + correctResponses(); + clickVerifyNewRouteButton(); + clickRescheduleWithSameTimeslotOfChosenEventButton(); + expect(mockMutateFn).toHaveBeenCalledWith( + expect.objectContaining({ + rescheduleUid: mockBooking.uid, + reroutingFormResponses: { + "company-size": { + value: "small", + }, + country: { + value: "usa", + }, + }, + }) + ); + + expectToBeNavigatedToBookingPage({ + booking: { + uid: "RESCHEDULED_BOOKING_UID_SAME_TIMESLOT", + }, + }); + }); + }); + }); +}); + +function clickVerifyNewRouteButton() { + act(() => { + fireEvent.click(screen.getByText("verify_new_route")); + }); +} + +function clickRescheduleToTheNewEventWithDifferentTimeslotButton() { + act(() => { + fireEvent.click(screen.getByText("reschedule_to_the_new_event_with_different_timeslot")); + }); +} + +function clickRescheduleWithSameTimeslotOfChosenEventButton() { + act(() => { + fireEvent.click(screen.getByText("reschedule_with_same_timeslot_of_new_event")); + }); +} + +function expectToBeNavigatedToBookingPage({ + booking, +}: { + booking: { + uid: string; + }; +}) { + expect(mockRouter.push).toHaveBeenCalledWith(`/booking/${booking.uid}?cal.rerouting=true`); +} diff --git a/apps/web/modules/bookings/views/bookings-listing-view.tsx b/apps/web/modules/bookings/views/bookings-listing-view.tsx index b806c3c1db..6dd5a6439b 100644 --- a/apps/web/modules/bookings/views/bookings-listing-view.tsx +++ b/apps/web/modules/bookings/views/bookings-listing-view.tsx @@ -78,7 +78,6 @@ export default function Bookings() { const { t } = useLocale(); const user = useMeQuery().data; const [isFiltersVisible, setIsFiltersVisible] = useState(false); - const query = trpc.viewer.bookings.get.useInfiniteQuery( { limit: 10, @@ -88,7 +87,6 @@ export default function Bookings() { }, }, { - // first render has status `undefined` enabled: true, getNextPageParam: (lastPage) => lastPage.nextCursor, } diff --git a/apps/web/modules/bookings/views/bookings-single-view.tsx b/apps/web/modules/bookings/views/bookings-single-view.tsx index 71e1ff14fe..a318e037ca 100644 --- a/apps/web/modules/bookings/views/bookings-single-view.tsx +++ b/apps/web/modules/bookings/views/bookings-single-view.tsx @@ -365,12 +365,16 @@ export default function Success(props: PageProps) { const isNotAttendingSeatedEvent = isCancelled && seatReferenceUid; const isEventCancelled = isCancelled && !seatReferenceUid; const isPastBooking = isBookingInPast; - + const isRerouting = searchParams?.get("cal.rerouting") === "true"; const successPageHeadline = (() => { if (needsConfirmationAndReschedulable) { return isRecurringBooking ? t("booking_submitted_recurring") : t("booking_submitted"); } + if (isRerouting) { + return t("This meeting has been rerouted"); + } + if (isNotAttendingSeatedEvent) { return t("no_longer_attending"); } @@ -476,6 +480,7 @@ export default function Success(props: PageProps) { id="modal-headline"> {successPageHeadline} +

{getTitle()}

@@ -691,6 +696,7 @@ export default function Success(props: PageProps) { {!requiresLoginToUpdate && (!needsConfirmation || !userIsOwner) && isReschedulable && + !isRerouting && (!isCancellationMode ? ( <>
@@ -750,6 +756,18 @@ export default function Success(props: PageProps) { /> ))} + {isRerouting && typeof window !== "undefined" && window.opener && ( +
+ +
+ )} {userIsOwner && !needsConfirmation && !isCancellationMode && diff --git a/apps/web/playwright/icons.e2e.ts-snapshots/icons--calcom-web-linux.png b/apps/web/playwright/icons.e2e.ts-snapshots/icons--calcom-web-linux.png index 356c3d227de95eadc33290e3d90d2259f3e0b674..a55c7d607c9c3d8e4bd274edc4f18c5ed646260f 100644 GIT binary patch delta 125183 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 G70+?MszWKR%5(?=p1; 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%0DVF(72d7|;g&mc1PwSTA~cn@^x z=@|1;6&3l93=iw+wU3s&hDJrX7G`H>E`~vzv1=b|*eFt$13Y@rJp;Gg{MsOxO+dVi zy0&`b-sOSQA)IEhGS8a5p`wEWfMrnMR|iqjRto{Z-j2rqST4FKny@@O{-kRlMllVx zUC3*RjlR-*|1HOfeM(NL_6$6O0^0 zMF&BjFXHyQ1b#mVTv+CQbbOF$Z50ORo-nu0Nf3;$+1n2l*@OnZHr`GS8*7AcDrp(i zcF20DY-ITQ^@NMD(xI9D-|=_96-I3IabHyFxc_nUQs?l9E*{?c5a$eN$rn$bCjjDk z#MP$2lmSzIX5oj+0Ba{RGt&ykq=SeGVs;k3o|&U(Vg6hc{#Jc+Qk5>eqb>iT_Pnlc z;ZP?`(cGats+IAtuWtaAIQsR&2fm1@KST?)!mOe++JM*pC#l?~_?zDA(f`EB<(8H$ z%B#iO;81#cyf}bJ{JwTpt}D*Y)0q_GVx-agT&IRS@5E8}d>JzpJEFZM`wcu^MALRG zV*lFmE@wn*b-fm!K`na;rczT z`+z0<7Pfojx}r|9ygzm#hkZ_uh@dPpJskoWXC^)PcxUtc<*`4KR&cRDadO&q?F9Ls zE5h5+cK{h@_p$u}y1CE(5O%@s0bgG`u*tJu>_>CK?Mdj`wKA`zK}ZoRtI)v_UK*)1 zLMA7tf?4!0wY0w=De<}Hy|z|UH9~hay{Zb{bX{$^bJbq~L^Ah(*HbXpt*hHcMMDFU zKh2fFhBB`wPk1GIa&&gi&5;8={RWS2G@ngGd+D1yO})A!XG|>_MM=nLU)bF9&!9Cx z=lW^vLdgU^Dy^??8gF>b0sZoyx7KLucLTl*mM1tZQAP<+M5;q-IFKI7Ci}ddszaxy ze&!KObD?YLQc+Rp8N~E=NiD&4)S@Vz#-f-u!MVEn`s-q1Lq9G3D~~z{V+YCDRCqV? z=${S63Qa9fyBwBuLum~BBjugR1=rn<4=!B84YP&)wtOzbCEe+IZ<{!Dv^9B?-nN;l zh`^&O(XW(+e30Ve(5+`wmxD2+z&SmKv+>zlfJxHCQKa<_lJ+dHB5?U-8y~S*ZtWFq}?#T&kf91G^ zl5C%PCA?eO4#eOMkz!=$40+#a4ykby>RAA(x(5LM7ecdDE$*>XRuaFxwKn169H#H% z?{5a`FC;8J{%2?^?sz2^eZ;XJ|*Io&x2Ezv$QNGLJi^Ao0-e z#fyH1Tp10GFl8B^7pG`2;J;3Ee=)894d&VsdY2xOT=_Q=d}dGZ|B2H55A^$=jP8IT za;Y%-ruKGXWY&2}K^PceD6P<4dIUBYT3TAbh5zjExo=W2hlj<*4FNxBsqFNszT4pt zdWVmV0sMzZxo&aVYMj}lBMFd=^Yq{Bog>9PgS_vYtExI~y0|#&Bw7q?eH*LZIlIv! z8QrIh$Th+H&pbWjLqr_PRTYx1L1K-#=Mg9zU&%5fXC9$tPQbH1g>P}XbT)f9I{r;= zeth<9Lw%D9Y;z**UCXh?{BA=IcnuT93r zZs_VNQ&LbU$MBC0X1C*fycQ^ZTO9ckg60f?AXRAu@C-iwFKd4-k z)=#&4vN26)t3f#D!KxBNnsi5;s->oy!tbR+xtyM$M;m&PhsRE^M+++3;p}Dx#hW)f zYot!<#kFq>zH7DQmp;mTP2l^SoBYp=tKC`m!pkz!Ndd; z43{J(e`6vr#hi{478bl87#O%bN+>=vQ9G^9E}C#WuVyRUtEjH-(#gC8^t<09AwYDK z?CXt1V`BmE{lF38dCSo7H#EdBgG^EV3`G*q18TarHn&`t@+7>5af7|Wm1&v9c1?+V z1uuVn&1ZK_lsMQa;Q8Ub9eK&$Up{~A7`fz7aZzL8#ikYub3h{_(xJ_b7y4>*Ypv9M z3r~3d<)#7b#suCzM~qi}Yt4=52&8V)7@^70)I@{#*1@nUxdEr<) zxBGmXQaGm6vV>Khv?|qZ8-6AvTT(cY+9K9(_SE5f1}=OPt-f%Q3F#2i(}|IZ;SsSe zT?3_AKeG4Fopbv-X5JRpcO^lJu_QtK0NmA06@h*L+>CPsRG{GrK4hK&IW0OoGSd=+ zk1#RS!UuT|)V9|_%_79aMED@O#w~kx`O=1ogW{L+@}?(e&rUOgYQ<)#NM2SJD9$&$ zBAohrLj=42CquWe1sY-ao~o9gRdg4>(Re-G1aXF+-^-~=FM+#{s>Hkq6?PVynq>A$ zQH{NKm`A%$uk-jQ>0)^Q514kO_lVA>@Ua3zL$ge_4T6||ao0IEm;cd&Cfi+fm2ivS zAoWtx%^koSeFf|vy($MmF*adlW>vs9tsZS>G59yxrUn@%Rf9MPJk3Oj`pg(K{yRe( z%^qDol2~daUPx6p#a{X3>l+m%e41BXt)M)&t9)r>9H>$R=d7cZob==)&VS?eHkIU; zj$ROrh!H(c^_S{tV6A!@Mpu=d&wwK6$+HjisEkjaWN(RsW`VHm8CXRQ;Z_&zYs~ub zr_$QnAXk`}ppsB+Du0d7w~3nBQ3LxTIhpy{eE==A&qL~hpZqnbMU8$$qyb|lK5Fql z)&3u*L}6Qi0`A1tYT?!Ds%a3Q&p@LD#t`3wUuGH58+#rfmgXM>K4}UdYXXIo<^%O? z&E?+?v2}|y=!s`%dv)2DpYDCx=p`4I-=w5KYci$JQb`cCu{5P1hqzD^Y6_au^sbo) zV~UULEG>=l*{)ps_07;@X+}Fv+#}i~TPuG$`pp9;rvkuSZEXR6^^YwRU65M}>Bq*# zw(Ebqy;kSXeS#TgE64f3U}}`=uhU_>1M?*ca514Ot z7~^v~q6l!Dhi1-OOMvJ z*m-#~8-i8f{zB1$=?&6Qtb-jsmGW!82K^w5Vg6Ppj7s+Uy?p66Txyg*)QHyCQz4jG zJdi03L#2t0Kk}i}DPO(}g8ez(%e;TXga`@sdHc?G{kwMwQ1_gFBcD|Ys;ZXFky*KX zd@W1#t`3%3W~svW)YYq;_Oww6dQm!cCAKTEyOWC(2>pA3@t-|b`ZRI9*^k0Oyrj;w zI2kB~GA@A?G zY`3;iR2mf!Y3WyxZX^U`Azdoc4HDAb@F*oAp@4LW2uLH1fPjRw(o)hO-3@2@?sxy= z`}V)bIpZ*J43@fpweIJ>pE<921-0kRzvH^wv{9WTSC{)eZ9u=lQ!&Oe16C$mY?Ptp zC8Lsz(K4?dT2}6vAgj_fq*Tv)5W^_hRpA$_7c=tm3?KtFc}K$?$H>SC*w9Rx2$i_( zhK%`_!R+05-JmSStvBR2XsL_5SLc4oLn(+yxjxF2joj_2Ck1VqD^c1c+9eWA>cKk{E<5zcl4fnxs7428Un;S!4fnIkb zZW0ldbNo`UWDEhRZQR}n9yV&d~Z zo(5`=aL)S(E^zrQbqx(jGy-VKpuyLsn_?m~6xaLX=VNH`VVHUijpxS?yQ$BOPCyp> zMYBoS8F{Ouv#Z^3f+Q8=h^RO+ucJc+jh2q1r=~37EjyXt?t?#9V(AnvuN1fvj2?%C zg#K9Gg=nCG<2{7>?Mhr>viwMcogKK|p74)ew195=(*4IMzoSKxUl$JHg+yEa_~F59 zq*)&B!khLI0jz>F$Bw~D7q}8NgaGT+xkYvhxed#`+pu;a>#6xm)W_%EL|8R1m8)nhEWBIz@b1Ck^ZU~x7w;bmr|uIyJ$7cgqZyIYai+le8mw(E6B>~oy4s2FcD2aX|1l^Ct9Aw#^%Rb4X#WA-ZMk5h+wN<>HhBKeo3?Su*3#0^L1Eb_!6R?NSb5R^3b7Rr3Sqa~h4|=#Be)FKOOS{?Vc~}`A8F~nB2)ipFaD03iZ!>Z~;~{_) zA9HhI`r%r`hX(G&{|iX_gQIPqFqCiJbw>MAyyJYx+C*ytS zL|wgq;3YIik&`BUfiqV0Wobm$7n`JVV0aiPmQyu8V~yV(#)b;=!#*gc2>%)8+6$le zR`n;ylP56JgIQt4 zUN+X+3@8$aT8*FF;&vC$msP&uwLNt${PX5FV$_{`r=BiKdjRW_uxsl=BYE`WcA?Cb zqg}&vr)AyhnFf*{*L5hzs6>Vn66%;)ep=foiOmpuHl(dCM>Fm7E>=;h5;PH@&Nmjz zR}U}_FCuGeY0SCEI+5^KU0vOo@8~0GL|hX$sH9J=7_ghh$5+2xV$vC-0{5A_P0f*1 z;;oa#^(<`8PEPy~YAL{-kS~j()(f{{9qDS$@`1ancrI@s5(~`%i|Rx zwTflD9~()`>zu>I{4x=K5<)cFdiL9Cef4C<7#0ZPtXo4F(z7m46;Bkr<*~{pag+o#&VS&$DbVVSf4N@6rDE z6NHC0&{lpg(*+oBOp&@uqM@bZ_+#QrV*_A;S4#)a`O?efeTWVANIlFT*Mb_m$%+t- z{re-#FOHBTZH{>JwMIx|i>kYd0{VtG29XOYhr_6yO1r6m2|hHmUnpcj5&8*cx!khd zGMS6h=(lefS4mzdGjFe-(fMNu#LE&aff$LJX#xoxxPzvBnE@MhhgBUWk_|)OzYF=! z#KeE)v_(E~T^;RiwE9>-YF(}@D{Ik!ne*{F&Q;tW{VDo7I(h%TNY>WID%UEdH~WJ_ zLK5C~qgjv&Mil9q*w*_>rs@9}-FW>< zP_-JLnC>PCiECd=!cLX_-QmRZ;*-_;%JE#&O)Uzn7sj7CFB)Dn%d>k=w%a8V@dXU? z^@aS2_`b73yiIO+tIfu3wXAGB3NdK<>6LmkjrRhImKP%p#o5SxaA#TkMzqdGk|(OJ z_b{r#c1?TaXvLF{kFVzlQ(peuktt=cmMJW-Z;XdKdT_yPVFA5~g@rsrZeZ(*77?Rz zz$GpV5|sH3;`-U?%UDUMCePCaaAJ*6r*REBNH^s1vhu${a~ z+IxGacG}j{M(F#bs;Gs|$MTPiB11%;y|Uv6zuH=+W_z}J325p?$Tt$V2$|E+b z1nJ^8AEb#nVrO7x8U(=aGmsru7Da(^9}j1TP7^M$xWWKC2*5ga8ftxx$TVPQ%-}Y$ z1e2$B!4|2pKhjP^#C(35tg(@>-o2YGYKhrY?l}1I$4_e3&*bZ`yAnO0wB0v1PEZgH zX?iSgL|(tm=F1z{ViD)hk{&iz_AON6^?pcOu3+gtYX^SfR=`^7y5>Pw1EX{D=BMWu&jT7!*&93udgj+@xEHnuDWPn>77E*M zp7f@rg~j3V5s(ZIvC!q^@&mq+ zqUX@wCMD)4GyXd{U~#a#9GmzyHTjL__(X~|wFUPh!tZWrkCrPhL}ax(?{9R39Lzru zC87)93gG%`n*C|7`o>@Q>CuV#S!Z)dIa&05ytY}Vfi2#H_(gcHnWmlEX0DQWYX1fP z_I!mHfw8P&Qi3A)mx2SV4hr>JSzjHV&bl0HZ0eS~^FHWV13{qwJjRss<&3{WXI#Rp z(6?q7;>N}&eHguGaPqp7u&z@KxZ5Vp$tx+b|HbzzH8ut4m2<1~jEt=aBAix;PxrLm z*9SEt>8V};r?7B;wi9EN#uaz&c>a~v?xfxP)v7~uh$ezdy6`Lm{GtnjgFgdSZ9q8e z7tUWPs`t$g1Fso$;QL~{R{N{1PPNj7?ghcDVt6{XBT3 z%~7Lf$6XiiZ!?u$LN;N{eUtb^Uxkjk?kOR*!&zKZC$7rv;{y%N3TyIVdDqplurRM* zt8;wd-KU{(*F4T2C}hf5`}h=m?Pp)*921C`l;L87A>{DT5aY}cFeo%i&2f~Gg|6pc z(nGf$At!^>++4`x2mpAeh!=z?{mDtl0RgU`j;AzI)0V3WuQS}D{o*81NOj?84 z+T>*FL_4GZ1nA50>LA;}xhA}O9}KuMiCOR6Q+Ck%F*OXRwTFj-wx3oqan}cB7 zFbO<7z@H@u_OD;Rd``+&{j!g?QconR;IA^T=V0lCbGab#RitXGE<=2{9m^7vzfe!s ztH)olFUQ9EENIKw+drI35t*y|T4-y#GE@k8#tc)!wYOGBKP`d=N>UP$1b_1AH*W|~ zuie&PJyz`>8nX44Pf&t3aK{Gh@PdpW*9}J2;4nweB>iB##$o3}rhjI2HM!TffJ1b* zgIVm1oOW5T7qnXGcEG0wP4JpPg>QYmt!*K8#!^mBy$`W~-Q7EG&G`P?YsSp#mOyV?WXenYLOyD#quu=Uy{|ok@-uu z`tJVBl@|oZQn%F9)pwXD3#%>19ZC%F$fRIjX2l+$-A%~*{o8Wns>@wKJLOo7xjn?^ z%2Go*SVO39h`O`)CF+Kgaif4`yOAm?Bs7Yh0qj1A;Y9)nik7kI^z{t%^q_Tdv9|}z z(Do_Q0u6zn^@x1{!Npl#s~&yCEYQ!O(Hfm!l2z{d){|;t(eCncbLlk$Az@|vus3e0 z*8<~MKL$bYeeCe{NGkoHkdTKX{Z0m-o%gWSG#weXcGACcVPeR*t=*YrQVfm=wbYf% z?jcS?i1~Xcivq#t4WeoMFJFnI7DWxw5Rg46tdUb%r?X$E=)@|G4G=&x<02Cb62Rng zrFiV!og?PZWu>C^)F7O$%=t#WEycWzPzm?*>AIkfr##i_Z=|xLIpyUQ2vAU1&yCIC z(-5HMuFpetLx_SKk3Z%$NWq0_qlrrqflN88KxLCLx87}TNi06VM;G3y?|i!Q$_;KlfEZPy{cBm%@~t_+{tT<+KbY$2@2Ky zbH&IEg{S5FKP)b&WoYf5z5jKyFxL6E?v~c0+0R?r@wdpt-3dDN1-E%5ND)D&6bOmF)^={wa6nwpje*lUT14EX@oj*6kaZZ!StogKd@1xh69v}3pNrMPH^`v7o-ueEB-^czqxQyo=T4_~C;ih{U z#;1Q(nBHi#&I;_Y?k2Fpo|BZ5i+o$8$&8Y48CRj9#UbQ-&q;DRwV7F>zF?UZvIWk* zKHg_{Zpx#)Pa7q%42Vg9LhO*zlf8nh3@VV&?e0&AxSp-jC{0g2hux+%h}C#~#opKZ z5+3gM%c0!YJ}Ap=)g2eB_U{|M*^DvTdFW@W10M%& zuW!Bc^YU2mKRhrnUPU-LqqfO_c~oIK8tKX0%HZ_4N7TZ{F{vzo%#WAzdjVcJiiJL$#e%aj<1?|<|<_}#+Ml-+5w9{l0&v+0OeHd)M< zZk3Z;0DZs?JEyW?Kme-YD43~5%z`V-Q*{EAwzg`Lj-0KnGMFltl;C*bhD+;ISZf&@ zBlL?UZ=dy-jTSAE^#CMk#6<>Nc}R-#nLiOb!S|@b;|R17XY-R1`=u2SdMt0`_$Geo zf@X1f2k*n3=8w5HM;qn1Z&(XGEVd{lWbPAuy*^eD{iGyt_Pl6Om**0VI6-CQr)Q>T zYcZ_B##oE1j$Es!7-AR6derv6|hP1ur za51%>0A@gAyh6y;f*l6O=;seR%g2sRPM{RZRz7ohu>@L@ zL~FE2O!K&y7&iUV08x-IERGA&6l#1eOE-+0n({jPJy=noBZRD+fBS^Yx%6YZnXsHp zd4~^OXBBq*Q@O2RO_$q)upaKv*(<+G;`rkCW-~^;YsMEMENZ-Ib>t4sp9{_V5Ey1G zw0CuZbSp3VlY-&>`${%{EG~p*IcWW8lasHzdwQmboh`zN0B48>86_(-v)x!txKoKx zP!K?qV7QEliC{wc#-~&H_Ve4-!;(zp9u7W=wMRcPVN9*5r3JNZWbZOXpC{if_G99^ zsb8a38&T*r)`3&XZ4Yv>r!5w5b=X-R#uZJWBvIPB4YbuWiCBH3Ssy-73ojXO6rap$ zoPJjzL0SBMIF7=q7Nn5{yIRxve=WxFWW$wlB(a+yMH$)qJy?Hsa?-x%0Wl>&C9!X$ z9=aR=#q8+l1{qDmjmI;xk1#tuFJ|BSHCl|j3Y;Ixm7Z*67HDCl>4t=cYTHfb^W2|@ z1ll^Uy`NRzScHU*0FwNBZJ>caJv(K)Yn@Y6)Z5Fzs!)!de^=Cl}H6 z^&Uem;KIOFSCF3{ohHttg1Jp+*l1hT;AXh79-F70dwvjo2Qv1O8U;VQNdAgQX4Pk% zIhHtN10QR1Yinz(k9n&7j{!eE>FE5Vu(j-%B=T-K=!G>2ofyV3(NWG~YcH|@#h)a$ z&+$N$jDz>tu}in5Dps2w@={l?!Tab25z*}G>fD;ohw8ltGExOvHkPJ!N1Lx1;Cn)l z0N6)=t@nIU);!ee+ScP@W@Z-}Dxjki-CHh+4Ot=}gNAB~tUwdar0I=CpuUclMqWYR z`nVYzODCpT!#BctI1`8mO}t)hPrG{-kb_Y#5`jKh-y zNI&rybKN)zmX{zAzIi~@=I`gHZQvv_kNa+d_Zhlq)JkfM#tM z@RCNvHy>l{;U@2++<}&`xEOB+<@_9)Opxs@={-~X=0<^%Jtqx9ac)ILMZr*%zl!n` zhC4F<8?1b+hVv`j>^CCyy&I;>^pBa~CJrUk4)Rx`g` zobE&xQw}=HL{d@SUDrr+GM^$P&HMP#cD!mCM&w+_YsI>H_$^<@yE{5=xJo9XRsUWH z@W$u5Y74PoPmCm96ej^H_b2ZSJU6jx5n>y&3+MzZtl`pB1SUR^X@0bXF)3H!)joQj z2IdpEwKz)tx-L$rT6AqF*zc@h{DTC-1hxjfCiC>_jekRfeTDzO@k7vm{4d0D$ra?u zSl6i80NLa~X=!-?dLwws=zVa(E?@{Ie zty#KL25#-8i^m!oX@bw*BqnM*KiQo^WUy<6(mUZAo+|0r50F+;>eW3zp~v*6TO~nW z^Z@5-x-2d-=vX$OFXwI9azmxM0=>L%m47i6zLPS*SJ3I7ap4IP$7ITqSwTA~xY{wxE% z&;`1gJ-yWrL*!Kp{U7Lp(Te#_yFsO^4SYl^pejfB;Wbx#?@8 z1jaX(9*I$i8_|z{xTGDTQF!y_O=vUl9*lai{c>PR?7Iu2@`U~QEu zCI+i;#}wl)9)vJAEF{9LMDx!};W^%4vobe_ke2e@-s5+i#v-n(SI=G&pGK9t-?J^0 z6mt9ul8_uF^{>VyP?P+8&(gOAZSVF>tko#Z?PR+fK_(6&lJfZ60R;5e0Y>q~I>@j# zfmsG+K7T3qqL1O@a^R z(NWmVi6tkpsdC^}zPY!fqJZ>n;$z1^MC*?qHC}faK^_bB8T_#QCh#saTI2*nOfePZ zt?g~<{Er=4#A(%Y+F0InAEQzVHXT6#4uPFCC zC2M~SW`Of)36h0{AOyzFfT(Ws-ssW6{ojMEcLW1cW2vZo;+$Nbs=>6S608FBKi?9x zAQ*OPPqxxfRmH=(mT7Lvl>J^Z%Av|5WvR9DnR9 zjX>IDN)kp>CDBFUZ^xS+AZo1V+oW9}mHYAI`C{5jU4?Qs4JDEX*k}IA}^t0%m<%X}@p`x-gVZc_^@r}%+=&5MotuJ(%ux9)ymmLJOJ z(%uKM1SVc354E=dVx#NSlyI%D@wPZ}?<1!~eX77MlagS_eZbRHj}rG5(}^BhRo#+@ zOuedw-yqX!SYGis(c|VzX1!oP{=FCcy7?u1yG`F#K{a<0j zPZy4dy|+C)(wN!U#;cuVWbHSTg@RsQudbMIL;D#BY2+m(Td`KtoMOe$gCtlnjHUt} z_|8qmdPlJ%OMz4+O}HhyDz5UNpGl>{ZVITH>khwTdUhfIZuh^zmnK6wm>daU0*8-_ zi^5(zGC44_V%=|&iMXYtBv(>03S`gLYT-AZIvY1PH?L8$iTj+kU#Nn1252A)hgPc)nr?!?B+}uLmbF$Xf`2aS8>=c;0=hIrn zh8aMaOi`{Z8KnmApfcmYmskzr=;u~gHn#0i8Kj&B-&l#Kyr@iW1p6_tv_9qeU1>L= z8sTkN3=SeKTW6|^;a z#tghu4UOURDFO=tIk|7Dh^NwEViSEa69!uxW!G;{=S@b26Q!^)w7X)!v(8jkATbzTQTNf=q2k$L*n^q*>~F_pt+mf)>rI6v z3wY@2`WEtd7B9n3xpL+52vVSJXLL!9WZY0~@XN2hIr`r(?1x@GI*bsC=~U7DGy7qh z`Jf%67e}tuQr6EjF`p~tv}iB>1w<$SneH&lW<0DI8#z8YhW4L6;9cgs<9)S1DL_S= zzXaERExGUgj@65Zn2SkXU4^bMnblJLlf)PWxAD`ZBfQbHultC;%vF*b*%_Ig+<~cs zcnh4f$g~4o7v)K?)Sn%HoKIb{;Dr-B5aTHC!&N~lf5$Mbu(xa?ZtK>jrdhxEH!qqO zYxr}EitM(;h@-z*^OW3QI$Z3qY(9o^0tSq?!$=`5(WxLqa$X)V7|NT2RK<;j?LS)1~!#zE|a72E#Y=77Pjr4ZbZS0KC zpYLtkY`w(C&VVcAAE?sEC}Wi#+N3xRy~Ga%;j@Al)vF=Euv;AlH?5nvSvz7Y<(+VI zP5PMSvd7H5@!)Ko6)p$3DHq!>>L7}p%d)wouG<`p!`X55=Za#ne=#x^8??2xJ+rXr zv)~Kp1K1R*C;;a{R@Pwg-54;rtIbvVvg7$(o7z;&qM}M)dQ;=#G_)PVuLQxZsDRT}aDWItT!)i^J zEF!s@)O(BBp!&O`Xc2{WGHW3QWQ@`=Fu;jn6LJ9o5#U%BY`>eAJWUQ|JmjnmvT6u^ z40S86v~%q27Eeo8dIh)o)0R%o&aeCWlCZ2sHT2cr>h9o7^7Dv= zS8OoIT`aJn7#;e%OpobC4C%lfQaES5F|gX&V6E;9?u zo9rS;rAkm_9G;5jj6%5@xZSd^JVSTkQ9S#v{jkrf0hAzQXJGaSu!(_RjlOntc0}JMUrV z8Iv(GGi#}<@Bdfuw0fxT@8uGb+H7kAR!0FJ_awN>Mj}Ntfhf7)NOAY2UwKVUZ_9D* ze}lPI4q>xKs?n>ZmqI<6=j>`I(XF2*K3*3sP)#SpQTFRkQ zyoy@dj?KF^1hK|yj~}Dz7p|%l>6c<>;4A6La=L#?(!u{_3Kz2k-Qte?16Kn&Kr*LI z9QMClr=h^Q>FhBd67O#^czi(RRI;l z<8`$r`rL$b%?HDQhvN0HRPUoU0@UsWqP$aa|JgHgR8E>-(~3sX2occH$gjfW72~41 z;PC1Fcx&s5v*_KgHd-pY2CbEeH2qlZkLLa=Ihy4njmw0VbXHYT93${Fj`Q2FkLLjt zs=xvQ9AayCx5oSE4HQ7Yy+Bz6)t@`-O$^C=N;(tR zCbn(LBFF{W#IkUK9UU2;MPJgJp9jQM-)`cbu{*FNRy)(zyHd1l-S9t;u-8LfjmqWG zu88@>^en%ndPckW^XFT1b3oUBo!V2)RaBpszsie})mM%{7%;3|KUt!A14k9>rGER_ zgE61L925FSERH%s*J6+Yel4R1+2**9C6m7T7qkdnqKbmM>n3Go1SRu&eUJ?{N;xbm zj_qh-hk9pYz>{Cf`sc&);vG^Z<-=G-g)8ib&34^lYGFipzV#f@d4IrS%~Tbv5nquP z_wNLF;5e(3oB{VKY4@S{Gmh+xo9|1MYVNS`@NjZgw&b;UcO%T;iY*{uq>}O70vw<~ zK=v2%{YCFMNzqMg4JD=U#xC+#A4{)C+`qD&phylc0F)-B|iCpXd@a&U8FLyE| zjyD-{!GOTw7Czp!+ah8CQE!I^7AnGhoV=p*X4NFM{wzS(63qbys1)CD{sUurxb#8N z4$S}jVLMFEBnxb9%`#zV5#kU&d5F5Y>hF>N{*8v1c^!jpT)IT*Aft3A9v<$Y#*Z0Y z2ln{rXjK@=Yt(Oix`>MVGT?LzV=*Q=TJQ1WQul8+_94M3#c9!-V*Cz=;in_gOMWLl z%Rg8!T@KXVMT9)K({73*_8#9P_8aac8Kl967{7vK5#9Md^ppnAO5c^PmM_X%7vC}? zYAxF|*Y)Z6m@Ct(Pso(XEEu5_FZkMOl;m`}(k$&`O9+Oz0V&MTt`{r0UY2O1gWCyq z2B4jK_zm+mKQAo)N{v5YXzLG}7BMH>n5v&FX|CYkBSN2^bNNAm@T}X0>_}uA_-|sTi_`uPkUcZU9PPF` za%AFSwsJUdKfB+c&J%&Q^jyr*2R3|WQIWX!h`r-m=-~Dix>>F~v7M@)sMRP6Ps#_H z+4NJrq&s)oFZSykqwBwxj46`f<+2)$p%SFB0>&OIO4a-vXy2yn>O))s&m>gq$^dee}z<8q8{OdHdR z>C>;IF~XRt0e;udBk<#j44zrX0K?V&n$3-Wt(GE~f@sz}&4@cNka=s>Vm=%wcJA;b z{06ph-+nzT3d_%*zRzX*)NZQ^AV))!diG;zD0!U;r>oD#`HjO+65 z^Cd^cHF<@qf?cyNK2?5hE@3)_FVr$a`2yvolir8zuOUOTO->F3dd3FN8xfAB&)~j& zSI6$2TTf-qE3(`#$=sm}7Iw&dhp9xzdU1KlM2S;M!f4XFcilrnbE@Qkkky!#=lahU zLQnTUS&IEgzIxsN=JkanSNV+XgWj`{m)GlJJ*9hp?Ucq-?!UpEudG`E5Ev@dvf23c zYue#AL?v=_yG7m-8_!?3qz@E1sx_P56WQXklmmKGPsl!h7b(x9j?cM^0r@1(*yJ32TFYUZZD@2UuH zYKvHinwriNHV55Pcv_GupYTyTo3=&Qw3MD*sc&)e^-mURYxYi@rQ*L0Fu3*1%_@wV zrBljzz8%H(P6lVyGuEp!1oXvmjw77(HlzP*u|EH^SXe`cjgQ1%LMFhX4unF>B_?J{ zhtp&GDQAl-%gbL}tn6K~c(Dgo;QQBU#NOIglqxDK+d6vaiHbt94b|GSWN}q=G&v2G zjm_7y^v0r78U+6H%)Mz$V;g1DI|Hmee(asG_E!)b}eIxhCQI?x%lLFWM*Y zwdOx4zKf=`E#xJ@FH{XgA%=ScH_NnF&rTAF5V$YDdHdG)V4dnjnifra0dQvp1TokK zZ?L8GFDj7i?$Xgb8}kw?VwU9!W_#y10I@cYt0~aX(W@_~JdzJpqS$Y$wDtJ zWW4VukTl)T`~OUYqW{We?Q~zhyQ+pa5BV{ zyrL1;A1Of7iw+JBhP@0ijm4Cg(a=!$iCwRtS(xCFumKMjcnSn4fUeYm=Q`K^nvEn( zIh#q;6Zx~PS26vRRUjbk&4-1YN10q#;aZc2SsbvqqD0ZOpMm2ptd7|1n$PYMApqXa zgkS)4Fcrt4ZF$dV+`_TLvR@5&zfHEJOScR!aGlAitkBq)nL`MU!BmiS<@^7@%f|#P zDVF%a-&rnJ-DiI_cMO@%?Ej!7gm#?G#uWn;$ZHSIO*uG&2BG`N@+3KpK9gFQ;DtXPr7<29)WS=U*NSP37kQ*g!|gYQNKW z`^#3?G%*+Hyps4zc4CpVz<_Y>qYk;CMPF%FXV5ho4o1cyLlUJAQ?-s|He;?H)%D0} ziGu94Ijo?&DS&u%4Q@6xm^fPbklA%$2lVBC7es-pyjznk1!+{?^_A>31AbOa0R_Wfxg22##BRN44B5z2Y~Sf3e~)%HTsP?7f|kS{4f5>GP;T=Nph#VAE0o!{V-BU8B#w_z#TjwcBGLHo~n3K!&NvZq7ST z$hp$B_@fS)iot9dA_bl;lfzGgNl5e?OJjReE~}yNq`N?Ggk)~OdjMoSHDB&cPB3`* zhf1{1bA%CSHC(_j1^zgnyErxLZxy!RN3iK|a6(|j=rJjooN4f;)41ai!^c`~HA!+J zQX)Iu3WWvSrhf1!)r3xeDAgqYz8m2XxYb8hvt46pjsi{eYMw~uC zQBg5DS+6HWG%5K_eqJ7AKGoSy{H(&lA1ct})zj!57(kqRX=yg`vKumoJ39 zI0Wx3HMQVn4oVkQ784K=k9{6Z9L6#LpbglWq@4QTehERhqs2zE=@R||*2QzYD@Mk~ zFc2DerV0bQzu69iC~eg;m^-%v8>gj(f7b3JUJ?)wd+)y{XWM4atN*yJ>e=14SdP%B znxVfZa8XK=S~jls+bj$54Ly5oz^nh+TWe?iQFraj!3}D<)&_I6)@K%{C7!$Fb{neH z)ZUf^T*RyM9yWK6Zr*d4c@Iz~NahoEyBsKHLC+8y69cbsc4N^1%oNSQ$G!NhfxYkQ z%COGNyC0qR$fqp(imnvX`IO)z2Io}g`!}UrKYjPFIvlIKSWx>cQMhZ~v%4?mbXWN2 zWRJ3VLiiWS4VTZH2d|=WR4zt81(8=oyY4Tz4Eaf>=x07W&BE%iR+V zGtqgi+ytK)EK4b^(OlDN=;-jF`ixD{yZ*z1Z+neEP3^KIfcsH)E6DHP`|C%UIXS@^ zTmKiIu$uxc^8X_3Z8PhptIm4M(>*#USWxorPCDeoCM4sa7eVE32ofGScx;#{C%*rd z=P%|thkYU>eG}KTHoPFMs3<9k6?I3L<)fWJV0TjGS5bEYQqq@*>K)MNLJ@q;R)nxP zh>>V%-S-|BEgGHkU15s0tvwPFFh2vb1dLyk!vMRQ{s&bf-WOzI67h=2$N(VF#)iE} z3nrQ{o>a|N-r3ut!~dEpP9uPvU&ak=ddicnoRk8u&lYHRSAdsr}Yq zXkj7y@FDF{&Q80Cn{;mOGb^jGu&@UA*IQqht~>ptn+n!tLsd4CNVqah}LW@96z91>jRGP|H8gC*nS#Cu+cUfVQv z^{Vc~cydZgpI$inNHsMyEBD`Py*Te}d`$ zjq}@m-p2+cVN+9Ns5{(SZ8VzR-pN5hm|kq`!Qkcs#RZm38|cZxLPD~T?Cj>qOU{>m zo3s^9xaP!7h8Rc}yxXIYGQ0@7#h|%ox@))ltMp{-it-sGtTltT$S&Xh%5<{~WV*p5 zKxalAxQAdf39ID&lh*K>5+fG}N5q*hyJ)z4796y+0X#g*$rtVAVCbz^=NMQAM8D7e zbv`aG{ApS++Ci{NU;qHkGZ4UTLD~%1xPpPyNQuce$@r23lcb#qH&bWfiHo^H_$3;? z`>%8^t$ycxFpb|36(am1K@M${HT4KtLhx>+LW430|z@ zZf*b8mkOIPkHNliU55$VZO%g=nF0z7M=k?W#dI|8QqMIu*I!p!Sg+iYdVEw&FBg`5U!-8cjKY7aJqNbhiPfDb*W zz)!t!-sB}wqGYAj-->3L`p^;-vI+Yf!6fOlNBNpsIwnp9)m&O0jM(npVMSouh-(+0 zpv$J5Q2+A9#hp82!p;z@^ZKNj4>pZ_nn9-~nGX@~$33%QU?#Y*UHN%I)Eu{pX0S})GsZ}2|;H&x^&xO4HzRhR_$B7Jf zb(Ns``)nuWqMRIpVnp=R%0lZhr2(;)`aU_`Uz|+Cht-YVX0N@z0PB=dCG}mO3LPCc zAze%qfw;$ZOemP#ZEp_@Jh>!p7Uy=f9qZ6=E?@7fC!fD(#HVT4L#C^U-aA(}y*PmJ zXFITh;aO#InKMq8tWqz*GOzUKizg0Q&)zwja3}i_Q1nqEsv52Iy`@4wGuwQsFcD{g6(7g-~G;j++m>aio9Zlr?O zm&Bd_;tG~P-baWr;t@(ddk&)l$bZer`33s{jxbHOAt)37aJ%psE9&vl#SOr%I3C*+ z*(Y;mN;x5Oj}Ycy^y^=Cmav>n%frOOnCr%U?|e{n%T3kvP)ry zlZyt4w)FKyd4p%t(%P6!dl(0`xbLkSw?L42HO|Gw6?o4_@hk1QjydJpzp`uVAE4UcPWF*!6R`tXt z1sBFM>uBoG&{y7Dep6RaBQ^I6+baoD)rGwegIhkZbBf;xLVh+EPIT7U3yoiVz0R2= z$D|%wL#f(Z&~nz5TNE}4LDTwCKheMa*&}J7;|Udvco`V*PFT-||s~!XNV4j?cUf1eP5}8;;#Xa>Ag}*x7c($PGsdDZbv{jL4}@ z(irjiohm#;Zb;H-sc!s#BXd7nJNuS*fw#Xl*3b~Cn+DO#ODik*7aO_rP@NAY-OWR; zKCJdRaoy0b6R<6n2L!|WI=QnjsB7^Wwki)OvN9{RLOgD@F>{xl-90sad^XJTdE2R) zR*jqN)ofb?Kz@A|WioP+;OS#%YU*=wUdNcG$RK;oCjLH2*!;rpKZ>MA!>?^^;7+Bj zrNtzUDC;k_nv9V}` z#KWh=P#bRjY_M!}jry~2&lO{yQ$6}5P*i*}AnKBjT-w|+X-h0W{SWnS_t8^Q_*q@u z-Pdo~mzGaF0xA}C)+1XclauD{cy#{_baPF^#O?;p>|%FHxzz!Ua%=0^P^yy;)Sp;tJX z1&K_X-U3uF+DKKpoj|C>y3#Spx)CW$=PI!z4R4G zO~1@9OVm>Exo@U7`Ug(n_7N+_a~T2F*<_1>)-4U_+<6uP93weZr-7VD*g$>EFB=$u zx-g&*WMv78W)Hry8{H*v76V?XrzdZ#N__fA5shfr`P`NX&l9vV_N&c&{QTDz*)>bu zLxQo1+qQ~}xs2}OI?K0--XrZv@+YWqWiVdc?{2cazGMlq5vrS>4kJ+#*crQB2Ud|Der2T_nTSV4 z(2y?h_xg%=#Og0WE#UOlhL4Mjz?D*Bk=J8;E~ob3o^r}in$>$Q)Ufl!2l#);nM)z~ z&H^;0Qse0fCh+`HZ+n zUAhhQRoyAPE0K9!KEnxNq+QTTo+Vgms8MZirpdrTF7A}|i;0()H!gOiVLaMswfiA8 zm&M+1e!n>48In-xOq+?CH3?lvX;60Fod9{_`KbWfV^CT-e}MeMT05lc?2x(t+8PJf zDhH3V8ON&-rIA{}uJ}xVD~eGip|f$r`ElO#xCgi)Mz1jF?1y`ZV-aPR zTy2{nj_n$|Tga23_~*)CWD->lPs<^{`Aft!RNaMr#X(G>@u3U5uX8wrW?nsV@0u^M|Sm2UETOarOUPt@KH4kyy^_6T-xliJ<1^ zil3i$*anYj=#73NU*xo<7kc}%11AdCmwxW)gvxh}+F3D_e&rA|8yX@;1>g6?=_A7>7SZ%&%YC}h*lW|0=A;fBTnA6jp<_kFy zA9tt?mEJH&_c|c&#ly+`cIZhZ-!9%2t9l1%KBGt%B4N`M+^H1W;w-ii*pDq|Yhy)^ z4vfbZ(xuyH@B5L=vnIh|#ARixyXv2W+_fvSQqW{mhXSRx@G|x=e}kGEOoZ{bwW>=Zm*dQJU43v5TT#g^q7mBWxdT@xOzT zi$8|jfqSdf^jjW9S$Vmg)PuP?cOm;eTF08VZ`DVR@E}d3H(C|iXRN%BZ~F18YmN^O z=>ukFh*CvW7+=bPdIvhV59X#9J9n0!M}I0S;~TzBh=Pa@J{A_?=u{Wc)1bzDEhS$* zf2~ipOd=^-I8M-b}!!Bn3@_M=42OT z5W2m$RATb@u|1mXAsme}H>maNTzv+S#PXts0|#7l4xyHNw;H|GW!X}n7Y%2)PnytQ zKH1ETS@Bt5Zzm?F1`I|;rD&jRcP?fCGT>G%=mLfk5&*&M`&0@uw*QB*w}8rO?be0~ zNs;buP?7EiK~z#vK{}*cN^+43QX z!1JuN?)#qenpY@qQ+(M!$Cs@gNcs?agkP=5Yr$Y~dd8t#!BJs>YSxeTQuNB7GY*@5 zr}k-V^WRu1&L!rvB`|+~7?`gcSeY`6D@-M`v$sk@%rID5GO3<2kSLw1|4KckN&SLQ z0wQJlT(xDG?AnfO+6;fz$EObmykvPM2gCXo-g9s1lVL->^hZtSGSS22A25>TQ4c;j z(jJ`d^g{<*oC_Sj-KDSD)$wC!)7EkY)Ot-^Mn*=n*q4|P7+S;Wxk|;!AJ~mrS1ygW zzdCGzEI#~iNakx66^9K0_w4NT^|jX4R+UEub#Cj&Gi_nph7G$1JB9iA0zyKQ;9dY` z*Fgh-%DBE$KRDRwerpjq1jn#_!P~cGK(A|8PD)4+6{}5=@Ddhddkk#3Zlv35vIdgs z=r^su!=VFjyz1FjKzw{WaAko?j&+5)%s6l!yo5n_kT>-1H5Pb*zhe$6duItDkkJl& zcwu3)k8cpZ0;+p+N6pJ?xWm;~6@%Vm+bshJwzrAKngS>sCB{|Z44irg8je+1Wid!Ee3>=J^*soQ1l)BdX=*ltzx2w9E=j8f+ zH>b&jO51CLGp`=|226XQz^B}i9^h~COsa;iZ=P1a`>EpgwzTt~vGPrt=_iz}ZLK19 zVwRKW(PTzHjg|sG`DfhsdyclhCp<36NrptE0-+J?L$I0VmYO~q#hi!MRcQ21lHxWX z7JD!x0~vLS=DSrjo@>{D;jNqOW0;XzE~;gVhKVU0DJ$DTi=zG`B}KPKHsqvQ^z|9% z>Fk6@T^gFtZYR+`*9D9>{-031QVO1JkTt2Os?N^Ne(_3|zj-0{{xT%=Z>cvq1w!Fa z1ml`fd(+j$)zyWCmxNF)!nt6)vv6b1FclIAEWDtMccgW9bg2U$)e{1Vf5V=zB=6rJ zgjT}a$GbD;`(po#-t43%PvSR3{4 zC3?}PfBty)rJBBIZW+9vz~FWhTT$`WG1jHmTEbh_#D_<)sqe^qDun@k23>;sR4gfiW@rMToYuhJ=?ANU&KP>U(CW+;DmKS>6_aI+Y+rp zJ>y|;A>1%>P`5{)p>I`75xw`|!GnAEoWL1uu`f0It0kPrZ2c%5KcmQ|Y|vE!UZt9N zv8Wk>*=-DJ^6>EXQm74~jD&Papx|?{v&W^Sr6nYcJi$!DBeuAE)DZ}Fg&n>~Du~5% z?!%~E=TE+$u!gqARMF5Qudz3cg@=V{JtG-P)vsD{Z$DuU+PyWU=f_M%@@`lS|6JbwNE-LI_=6(^X8*?4iDdJa=@n-;( z7+QZqu-zeVG!o;dQG}E#Fa|k|U!M8!=u(Y(?-6(wUD*gQU`$w?pS0DU#s%P*MxJTNN`nUroqmLi^yj5r?Fp~6Y%b`dU zNV=z|*R?m8_n%SQhuWPo=!hz2s6fu?tenZW;R`5sbLH z<-j$d8h6Lj1Z#iObYx|d`#N+XwR3fK{&PTV`7`NMeXcy%`p3JXYOhCcQPHuEk51ru zXkIpCx^||`&e67$QCBDEd5~GQwM)MElGUgZlSYYAG!x&iw4_ymv$P{aVtJyY$@!ZT zA5jYTh$gPGayLRK|A&;+pwY7}jgyC`--!3D<7aBe&GH6_=CF9qX?C6I@wFS*swaf4 zGD&l?eC}}$29U=tRb*KXx!s7>x1wOv)xo<)@_S#B<(ghVy#IXYIFVKJjI#NvJy}iEwaqw72WPGFDQu=upee$S^|x zgIJ03HF+@_Z+=F1VP=r=g{r1n1(BP$y!!$-v+(V07Z<_Y(4&a!r;4T|oL4BDEW7tt z$17tS$Sob7KYw1mVI@sqiJdtYU*uf*Y;cV737C8&ND8@h@rK`oAT+k zBtPWmD`H>m>=tNIzx(=#iy`@1dDl}^Lu6)lM%aFW*Wq^^`&~`oP2_H?)2F2s7dsIV zi7X4&G~?Y28pux;iKLSlJC*A~vsLhQ4?eB+|3*8!iIUnGe0lNVN!ZGJV!T_#KjZ2bcPlVaXK;~fPzA&B ze2m$+F(SyHHaTX9Ul#Lbj&$#A*RH*F)veXYW@cEt#)cHx+qAR(qfTn8T2~WV)texy z5P2rL$JZSm&_=fNGyjN@$DqM`bO2mAwn^I)s07TXwDN?0kWA^y!x$~FezwBy4yfY2 zA6Gg0kES)AB|(SwnoXHUG7eWIro_Oa)}#$LuKLn=$ms^|QMWGy!oxjtb^SG5Q2e2= zaM4*6@%usQG`mtpq_AesPyU$%4H4LCX8t%psqah&wc+99HVU zC|O%uW00)s-^XVAk+!+JDLOr`n5ohEqy$n0Qd6ZWL~R4$BpoR*JO`y;8HajNHVTB^ z@e2u!mv}f|e#Ckh1^g5q!y3!clKCI2>o2%8hs*xP! zcb)%x90)q8TY^Rt0p!Z0TwT`rT=BGC2dgsp5yDNiR zB+su8@EjT}2qvO91vgH>9NT&El$NeiL|E{NnFSR!b=Q|Yo4^gMvCr${_qsk@Q;ttO zIk}{o^w#}Z@$anCklPCMVaV4Vr;EC;Rl^*>#DvYq}arHDij8S9|2Ze`= zr`Ko<(da{A6BIzz(qs^SV-qW@s`w@tBZU68y6zt zHb&Lu<(YXowXLR_e7p|85R9)KCPDWcU!x8OqJ0xHcK%vNfX^ z_4x(F&3o|NV3PjXHQ3VkbGq|uwyLVC`p{sJJEL)W!_^ymySqgd6_2g#3nZKZVsnB^ zyMKSCr-y5+jHsx9sUx%)rV?gg*c8QZrDD}CzEJxfh&V|pmu6=pG$T4Yb+1HRNfx%# zDKfgSuH3U3R!f&|I~0U6AKbWru@YVw_xiQ1c?F|bBGK7` zx$iT-J~qw)8D0$nCQ|44a-@Y(R?lgEc3l;M)(b0&%1S&P&(E6Cv08Xa#g_2JF*Zsq z>ig3avGr>`_m)c+Nxm(!G82<1>Q;(^^9|UT7Nsf|Rhf*|@)3xOt|xXz*xa`Rwg zhk@?y2;ah%XN=2q85rAQUkw($t_~JNvpY*!3Qt6dd(Q*UM1{;s1L?*e>!i^> z!=oG#L!+P8CmMSPk$j0*JFuv&zd=d_h-eN3Z`@dHq&P+&cxn41|KpjC52RPn zzr#RLZ>fK=C$mD4&`0K`D68doI=77RZih&os4~mV{@1m&l_DkPXwSWswr6iLf`i+B z`kW|5QA1*yy0O+3N4}?X?`?)1cGs>(5`Or2Ui{>%JpBegx*wIlETRq3kk;2%r*FPs z48k=a55~aKugBF_Z4zlWB^`gPv<&8yvKDW%vVcZiRQUmI;OR);J#9NQgJ-FddD%O; z=fOJ+-QB?b0N)j`n@8`k8xPXwX(AC5t7f|SoH59t-m|UBi~^-OoLVU9RyG;w+~r#4 zjM4!7zq~EQ#SxII0UL!az6O|CC0#evhV`Jmc{xv6V#pQ6Mhk|Vc^A= z|N1DSS^ArCW(NA-WbFU=;qb5g>`}#={_)RIz&P{o-=Gkr?|)7yg4olhs;R51Q@~Y? z&w;ne2sQ&AENd^pIn#mVmgQ|_<>K&9c}I`5wHe=1`*UAZ+iJPsJcC`!4CuEvT@E@> zJ*(Z%&w?+LGY1tIHZClz=olLEtljnJ?ws(BJ+cmacs<_2%nYZNJ0s>IU&T?w=<#DJ zVM}XkDEyJ^>#~;`pPyLVK_`yf^%{TezOu0?N4Ii25%oaS!-KzmQBlHam*=au(7hf zTV4eQ0pk{`$LogBA+nc454*||%|i)d4%WwIR1FbBP^A^3U3sU@5 z)#p?JxMNeqMNt6V9DX1kHo^EoZsz6z60q(QPGZlkZGdw;(mw`&^n?~4NPyKIkciN4 zC5=5^Tv}9CMk}=9J_2fsKK`UON?IwMp~1n|g=kdC^c)i9tm`h9B-ssU_0O=fBoM3D z?M2NW`|iE-5-vW~^-1Hm4H-*E&aSSB<7Ra`RH-TG>eeDMkAu&A%FD`%H1UDW3lPk= zuV2A#T0W0>xPn|k4eN=yd4*|*+STuOOkU28p2a*$E_2R}$;-<%kLXM>l3BAiyp@99lL%R6SDC= zI~~22;~#kkX7as%2<17Y{)~e6AdId|XQ3z(u`8hw_O60V&$Q&S>~61#kdU%6?LEO8 z`S~B;et74$vbzjhCvdC!&yHT073Ig{iwASZrQ%&+Qv?aZu3dnQA+;k~HkXO(SqbGC zJ}&pl9B;-(60ZC*G@#rw3H0d3t>yM3h}qr!`S6UD7#scq3bf&Za<`E>Dkhh$`-iXF z!eAyGtS>hp7EU80UHz&==Cx{xiK7t9#ix>zb#!1C@hfNo^^q2X%O<(dat^2bgZ55_ zMhy*IGNyZfh!D&4(N{lo$Rlof9hDT7-$kdRxc5L_$LjODJIe8eNe(7p+Z{o;y;sZY zG;{cxXLln4o9XUPuj7z?@oZts0Y)@`$Nja(Ywfc#W#x%javV7y-u+I|S zxWDSnn+H4Bae$pj%#i*nIUc#r-_<#iFck1ZN0%cyW@r2I>1p4c{pdLzJ{Hs2_v4lD zmDinL)DX2=ZSGT3UA}_7W}cYl!LASQ56Sx6m+?Wq$)$C}P}03CXiNN|p$!!2L4;%F z-A4rLG9tkmKQQiB95qVS1qm8{wAzv{UC2c+LatX(6d0KTx_j3k9$p-C5WVCx?d_U3 zW*QGw^N+Nq`1t)D!Gsr7JWewT`i6#v1tiF9$HSeqpcpsNV5~Nw&8y z)63kESXyBRXHnNSH|LZJo{By=P0`T;OPmcZVY~ny#me&XWNmzcp$4Vz(aR6Whik%Y zeb$RLW>iCvd0+q$HjNp)($dYXPq>xYoc1Bc#B(~naIUV?CoOt;c2+_`KXr@fQ3>#9 zD=XDuqIApr2M!OLh+*+J z?@ZAvlxpKi2d9|gXesOEi0|j;Z@zVS9AR`sGNcRJQJcm$=Q#!YT$AnGN)~~o8|+#Y zC@7^cAgy`-3kB($o-OQ{vND&EHf7LFssT~<_vEYwg` z9H!T`qGHBm1|NUFhb?rjXEVh|3=kI^yDTSMF3)Yi`2w)}BFGyr&sD(j037g)$>qhAL5^GbFGoe=1OS<&?6| zLXr~`1fa%#1453Y)5OC0pY=5Lpr8WVs6RgYT*Bs%z6K;2P~jZu+iMsN^rtr#G4kBF zLAEg(!$+kiEa9>JP0;5Lm?BTq>CxHI*&sADAfzd``SeWh%Ov6OdaY@$rnk4AtxAuu zk`e)ddPFo!fBMc%Y`e*YCD-k5S;3c|Jzf{pjpK`mD%|+fdeYo12YqmEe@foRLet1A zYF0yz3o3?&jb1o7wJ9m!CDW^w|1zYi+;KYKwN_!m-ThiJA|fiX(B5&)y2W>@GzgRW zw!EI+X}`=l6kjc(lUKzN%Z9=%>8rOw{C;X>D$TtK|CC~(et&Q<4SJg5iL@r60#Q5r z29wa7ihn#xzv^(u)Gm*&uZq|LZ;`_^zOs8Xv15Ll=IQCe70W?)J2<0lMPHBT(zZ2Z zcyJR@72K{$xz(Jgee>qc`v}C&|EwQ5VS)%aHnwx;*R9>F3b!43<(CZP(V}nbS=fwc zD-pEkvJzV*&+a$*p{T191ZhC?7Z8vY_}M%z-9IFx^PQ?&CKD4dAKTb3^7C(R?m{6R z5mI$^iG1mT*aY)xpOtX;`_gPHzXJ=SCf~aWQc3()%(H72@n*X6mghb6Ww8j zR1f~d@JS)1oUaL3iCdJ3vf6Q62D>lwT>G|3E!E)J5rAh$`5CQ*=bL*B`uh56-F9gW z@H>c!k(tHbKa;3wBJKuo+x7M78oO_Bb2G=pP|Df!`iKkD%Ou0b1J-b?H*Q>EBBh{_ zu-;wD)66Yl6>kc+(StU-y{+BE=I7@j=XL6jFuS)M=>4Ms2kGj{N>zbd%8hPqX!}RI zS1-wPN^=(=h=-RK*20KUvT$-z(*A}FLdZa2;oy*JKbiM0GQkT~aylQ5m3=!33kq<< zZLgD)^FO2D=3OY)Z=^?}M%zEufqM$2$MQDW)i2U*^AXhyUK91I$Tsf1W$drfs=R{_ zmBv2k+zPujA|ZNudSr7}S6yg8CeYi>_RlAWN(~*8<7hKhOHLQDjCHGpTL`nB$8H{< zU+lP;NgFb~Xk-aw_Yq;8!{<#s+eqCt$+FzxdOc4{jGAc|&&eb6^)b8ABY-;$4L8(QJ?c9q!)_;CS(ge(E|Y7eC)4$iQ^MXc#^5h|;q<1V z0VMDK{(hK{wWXn{D!H_u35gsiV%Pp+9Ii5X9^-~Q!-)c427|b9Ngt*ldqssF0^#oi zl#exD$w1S22P&Q7DMti;6!yNp4A1SBr9Mc+R3Qt6CIsHxe&&Wv}swvtD@Hl`7xrsNv2 z3!l!JwNg|2@*=H&Z3oRJIE|=*G2Vw=A2V(^T342~S$R!YmThg3Jw24*hfUz7{BM+a zq+o@I4Ok(`sw_lbt)*Vinsp(y9}q-wdvNJ}>6!q?HUZHe!^bgC>z*GAjJ;<-wT6aLN0#PMNYOeSGWII9=sO0y-T~r32!s_W)jXYkALa zSiZ%!2x)~Gsy#DCE@pD;?QUvfPkeR7}OBQxGTXKKcDNIR3SYs55*_j1Or8kz_r55Ls$XQ)+ zakPg)fm556^JQ}7!z+}hcD-H(7>J#}U2Q6fnp5zv!S)WV&gl+f!R1;eCU-wWG72kB zwbrwS)H}7QN9m`c_oFp>rnfS|9#dHO2b`9`43%&bhs-9LCG}aS%n?)n$;nBB(}P#W z@I>v%<)ETdRm6Z{gG_)=;0n26YH-=nZ~G~wmbqJGcXJpv@ApZoDe*bMCi%L zz6@v87Da1n)z)n6?dp7pdo`Tcd4BhF4*cXRFs@YK%|iiLM)=3~3#=N3wSVsdHg z8Q+O(-8Fc&p#0mT!}LkOKFp0JOb&})59jQ=xfK`l^>R46OxRmEM5T7>lsx+i`rQPX zd8q=&!AO+pW~=JnAqs@Ny)rw?yg$)-E@Y9GBnG^sKXrf8F%FICeem!hj8vhcG`DYn z2?jBf;O7C2Urm06+qIc-YgoEY)<7Kz8G_ z#T5&{K;wBHocI1cuZ-^%Lx?*89e+Tb{PDT*dL8>aQ?ZdJe?hZDRHotKh{Y_qt_Cp8 z9lvgLTvJOHUT?ub3J!9nzP*U&C)t?1dS$zygJ)t~^ARuq3xnsTX)?_1Xa{VHE{@c52w-n}rLSZi<6D{~~?K;?;3U=_e zCxAzmh6k)N7g-T|Jw(R&SWv#RYcOlK(Sqsl<#jkH9iCwm_QQz{S5sI>h(^?Ls`vbt z538)UNj^FAmdpu7iY>5V6j+Hr^XRvX@nJJb)qfG)TN}euBD$jF^h>DHQ6_|t*r>d8 zvPAQpirJ}D#}j*Vb9OiWOC8tA(_hrBep z_hR2V*}}&O3hU|##)iC8AB?tFXO~0-bgWlQD>!t4I{`Ar2j3ry~MO{cl)V>Vs)O@Ejc-m3iivK98*d6>YV%Z)D^+4GnckNh#iyEAw;5 z)1=DTUnQj^)t-6W<0R!zgyHHF3ybuvQ!%&N45Pj2dKC(b#m-Jn2L}fMfgu>JIBGwr zl+6}=^hTOsD-v!hH4Q+(NZF4r6VT`dzQ9`^E#;6G_t<#PLaI$ri%qKqHpAdCGKx(3 z=^@py*#M#&IkirN&-E-^WdIdOaAXt|EJ1@w^}1n&RV{ZUPM^O(**aZ$=mgfW;HFwy zT1wS1i-Fw@5{?UFzlz&FDP5GXu)rA(7-0I76X5-T&>+G<2~|()8Im%Ze0=#J5St10 zk;G1%&+g{0@%@E_1hALAzNi=(9sL!C$oazs(>0b5m%idTFh0JxHrfbR60Yi_PkMQu zK9#t3KPuRfPn(MldCxif>2UVJc1vtFczaLF>Cuz53l)sm|0X{R5)(3VtZ?m~Wx)26 zM{)?OCl3{6L*&h*E1tc z>tKUH(vk6$KUrW9FFLxCnwsV!@zSWd1?F|DFs-Q9dR2J5scjAp=BcUrt@*kzqymx5 zf`_V$5ZI4CiX-ps7#<#G5TA=owWuQ1;+1c(+G=6ra*!t$Em(qhfQY^3z=HA04RE0a zJAFytnX1CVbd)`0k&j=Fqs2jQ`Yl~U%gv%^4P;Kv=l+4YYMy*ib0S>7-o!x%s;xWz zNl?Vy#B+cs*Y=UFu8o=1^jgVD(Tfhaw@@xjPUvBrV7LOK(~wXe{RuWeDcG5m$FUzb zq7X(ui}TY`n+4j!Sk@rXy};$q$3v1lQl?a4rS;x*^~)~DA0B?Zk^jlW)Ko1^e0hBx z*>QNBLZgKiMEj3>P2;~F$T#L+QnI~qmk=B1&xUqpQr=61K^o27Sw&MBAGNk>l2EYQ z+ss6AUl^hKIs7_9Z>gocaRV9APfv9ZG&1hU7~x@q>9J$D4V#5PaUxpq;l8)RB{G;I+O~ zb75kL7Tvj_c?Forsu7f#OgDNxu}oEaMb^p_=}2}%#EBq&l^Tio@meXkc>!}BMI1ty zio}~*8ZRYLb+hH6l!>=5O8~uDRQ#zDg$rtUyfSc^m$d&zY4!k0GuPZOr)^J-wJy2P0cE7# z<%n9|a`bgDy!n;_{3S%3(GV3yyrIhL-~~Qa4<(o9p65Q7WqqJpHo88VoupSq&2dKN zP0W6NequL$*+oEh;ETehMOicOaHLZOf&&Nm?p@Ba&bU4>IEagfPr^i`08Xl5@qi-V zSfd8#-J0WpZyoBeO9kl@4KP21jWd?4r2u1T7l2fx=p&B!yGLKNFo$yE>$vGe9gSAM zU*3EI604gp@C;ld`6o-QYAl9UcHS7T1cLc(|9&A(D+-|s)(VQlcm+#&$no0{>%}6) zDfy{*6he9M$k^WBFMeE!Pb2AcS~VO>GV)7!^@oSo2@C-4z9+ksn(!fMtZnmpaJpi6 zln@odVB`6a=_%jo2PkohR)Y;1xgXb>_X1laSf7Xy8>US#r~(G|NCv>H#spE3gj#yd z_LZjMtIlWJ-&fIS*X`1;;2wPtfT?3xmFwzOjG)NDXY9N2N>F zQ#siHQr){4tbi*1CUOwBgk&`pGh4*WL%0 z4wwgXuIZr25n=BvBnSWWabib)jCyAm)$*vQEVu_%p{2fw7_zEH4g6e)=&dGbNy;^> zyoKS-4IUn3vtcZMQE*}F9#z?&(7?I*6J-cFyUjZNkPsyeJ0E?b*4=?4S05GCKkBun z@?S6``@%f~tpVkRfsI8W42&0b*F64&q^xW(6glT=?(71Ednqiw1>jD8{!);$7H2QK zkdi$8gH9-aXKrp6S){^d0>ic&x)tpm9CPy&5UTAq@IB%lsT-H|%C|iCtn9FthF7R1 z6ZD1TEL{8g9YzPi(~id@Es=zVf`W!3K6=mO%zMa8IX-1)XI7A6yvoFDj+iDJROpAg zKrk5}=Kxbv7J=2Ec&!dwXTLbFlZDAGMhHYyL2Zjoj%-N9cJ#Nm1+EDMaV_tsrGWzAW>~6)#LP9ET^~cpFk54+t8l#82 zD=&+OxHB}^;wb$g#oGFgWnL>M#&)G*ozwPhMTHxX+uZuXGNuTDN)J;@uLI(p%ebF; z4DTTiAI@KAccOlpkqTRUnwSqR({Ax|-+lVnqwFD^Z|c96urt9v1O8u0&xmBf2qr;a zMf)99?9BgwKaUsU4OHW-GigI8e6c}g!M4P-uk?qmY~Q0u{-38_SA(@^J$GMU8>ZP? z&F9ruGVUs~az{3P=I7-Z_guemgU)U1KEwkI^`*k=bDL<;R|qN_Z)4-+U0UonBqt~L zIyeQJIA{p}Cx-Vg2#->+x|#v^%9X1Sh_QVnP-`8a_6hpJ6M~vQJGTTmg98Y4Bow_H zS2Kfxp4}P_#>lOj0se<{gD;r4GG{XjDcKa1makv^={)ofh_{((<$d9mN(i8&=DC0Id%WSV{X zYc_cy4WsBSJ-EU7#dyFfB%pPj1{_;$8v~J6Qkps7G z2}D{&u5$H?a1Ot1uAnRbe zX5nW4J!Qo6b^})&E7R2v3d7XYlt?-m?(bm;x$IfLE9n(g&hn7wgii(8yY3LvR@!&> z_nW4H?Di%E=3L-|n!}L9QOqF)bhhX(ci?6`;XeXG5_TrUpacH-HYbNEXvV};DS}?g zb>$lneT4-DjTGr5JO#y%)lPg}2c8331kml*YktHnYmMm505B1r9@1Cg9S4BU*vk&Uu2Kl5lEy*`M%kNR*a_hKu6}9-Yy& zN#uo1TYhl~$cXwc%&5+*h#8+IZMexP$>o}gSV(g+-k_4P?R>=q9e|#N$!JC$>y?Vf zoLpR_5|3`P5=%)+K|u%{y%x;L34*=fleI@#V)Nn!SHuRkobHlxHGj6!byjtU;ktZ4 zAXRf|-w$$XBb0RB4b%qL>n5vlH%dDQ-4cuP+PO()Y!TIf`pI_-q2(Y|ZD{y8+NP+b zrKP7Q$-%(^jnO(Ym`TIz@WOmDlCIXMSstDwH2)@VD+M+DgFmQCdP^?i5w~t)8&~#+ zo{3Z`C@3W48n=7t6~`tdbRJ4ba3m`*LkM!&Zns~gLXlVZxM0DEIj@>B?Z1#Y;r71FX!rYlrv$8^TbU}m*rQ#lUUotWtZU4RZzHeaRpxe zLZ_wkd2yRHP11G6fLm&IeIpFP>A+{Ew0aFr62vpJ$^C%4ly`a0FZAl3qNCkmz0aTM zy|kGrvc}zzWcH+N(y8`%AQLJpxD0KIif|8lNCY=9{MCSV+tW3Oc2b*}>3=upu`1JX zjFkdfNs_#+b=HNwmX?;lyT7iBqLuaWACcgeCI7&Jxs>!@h?qUcU~YneQxn_bzC|$;dW;(iyKXI$=Z)wT<*L-k?=> zbaDfSu_Pn5&64F&bEdfH9``WEmaD@~cAfrxVQgxmb~Xje_|!&zhJeDEMzttmKRi9? zd(&Tz&4la%-&@Ujer|4LL>m+wD@#j|aR5VS+YFfqGitaT4i4$SE=o);1bG-B<-CI5 zM0hQ;dC4@oARRU!+v>n2NP@A z#)n`u*4B=PrO+;fCjTU^X+I~7w6?ybYrI0p56B0|#HL6bG1hr94+>Pb@B+aT!fb_9ENDiA#<9h1M~F1cn&36ZIR``^CK+%4)f{<$6y`T1E= zTv+K2Qf{Mllp5_3h%03!d$XW>Dv8svLP)I!U6!{+23^v2q^L`0#nY!HptzOC@EVc4 zam62p)0-zcN_65boa2xGH=qD`LOV2NlpGO2(SeRTY3tO(&MyCBve#`#$Jzc{K0Xko zoLhEsfG(ern_G#%*q$Kjvv%JNp7YMz4Og#z;pVQryuFkB>(L96|A+ukO3U9i#K*>( zZPsbk%3|J;N7_s1C%mh8v97EeYqT2!e4UK)6{N?pZ{n_?Fc zlY~MTzA4dk^TiddS432Whi5$T0zlZrxzsY#rYt<>@S7(`)Mdo6qV%6Mr~k!r^3>FU zL9DSIVplpiq31qx3HnZp_(>?upv{a+NLT_I$!hl&T~S6i1arENRqrhH(u`#Ms@}oQ zjJ+Pm5_HO=_x?;LH9h^8H+M=^*3dG5qF4kqV40W=`GnW_w+};S36&?YcIxM`GXt^q z1&|u#m%$oA#X(#pqBqUOCnAMX-!R66%eZAZx-Cldw&Qv28=hGeik;{W^kc0?ap65 zseD<|`fvy5;yJQLljXf+kft&~4s@qt87?j^=#?g`os+BCFQFMj-H4#xMF;sr(0!?a z*c54J;MO=ymMD&pp{B;Zd$$mgOvKDQ5k(2T_>ISPOTaW+zt1yJEvE-969t+-Ar0d2 zUi?It)R3I4pU>R+F)B(*o!5aHXE&KI7NuXs^GS)0(=J1l!@*j2I6swkM4jyI?P178 zKoam9e+Cz2fC~9%XL{NGqBE7MN7=;xdkbmo>Ni~+@t+w)|5r=-_m1+vQI7up4TMB) z7`~=;j}RJz9O#h$`pEe1`Uc-|qW%OrFLONddQT~@A9$HRuw5R3`wn?r9I%}g6h>Z% z1j~DziVATFmNhgqOxj@8Ty#kg^Ky^#jV6b>@8PE0$ahrz4sbJtF>`^wT1x@;5;M#Y zN^Osx!g!uYo+^<_i`($I4}&F62*Npl;S!>p(E$duE}c^k7deNdl7WkpFRf1XPWlkW zvbN_*fEO5S*SJhI`Ac3%bZX4He<h@;=xd{Eu#GGRQz~o=pyJ ziFLMR5Tk=Di1~DjjHYMUl!Zq}%a;SjOva7Pu5ogfnIvWehbYVdfU2+O7L{%y==<{P zZ^#hV$E9$~k>&Ui%lu(|ka3M%LfSYD6&{+>vXTcH8lUq2L=qlrt9G;_hj*2*>BQH- zko=*+86PJvFCu=7-(3gI@5u?4O0xJo6m>1{PZ}fXCCr~Z0cK(z>}8P*GSf|RT2@qv zjs0n4Cb3ObTeC5jub!|hiw;#K5w%A!FwplUl}p^#^T+RN8GM=nCNVNsm^?eh%VQT7 zU@|N^PDaQd0GQAfsaq#|pV51N-X|tS7et>w*?C!mnDr34?!gQ_NMC5+s+@v}H(ll+D-Ypb5w zY<^3vbbQ=jocDE4A{3Z$3Im?Ox?AiQas9^z0){^$BOB%A6&0&Kb@f())C35IpD>d= zapqts_Pv{SikMx*oPu+Nx0r|r5+5?NGJ9$%R@TX8{>8`9J0}pQfGoWiy}Az4*`^(9 z_Blfpwyxn-9;J{5JjHJ%I0o=`zK-g^m$k9^y1pO#4p$k3QGs%Vn}^KS&pi}{`= z6n(@L=fhCM2pX8=qISEDh_WYFnB!Vyye4+h@-t%0k{xF3QO?NDV(w3o4u-pSQ^qT* z>-6jLrIlO<=;oI-bAbc?*j)0z^I-Iz@TOsBZ`fx%31;~yQj}1Iy%vH?a&F{WyKx` zaVQX#{!BIdv?qWm0rcVUQTFpLS^y2FGPYXgOTy?n(oBQ_Ei^>_zGasWPRhGQz5+sd z=#E39)H{2-8_B55p4j#%n}Hj83&aq3M4w2q3<32dq{egA=iWd8Br_qmG7qr5R0L=h z1qT>0a|c4Q>LD()#mduQ=H=1Yy_D8q)pt2L^XuynB^(1UuBAI{>#BUG`D6{~K7{Ji}MtRN2xJuEThymXl3ul9DWhXhts8( zTf zEckK?3cf9aI)1SqI}>a?RfmQNaPfM2yT5<^QCv|BgH40l_KN`9wV6A=r=0%9CCGt< z$lO#3uY=#~RX(*L*jANcm$Orx7kPq$pBq$rDmo)&3*x%EPJB*SSSJhLpPlUI#}DHy z@Ev0wLx~Muy$(4K(R5Z++2pZ_&KOi3uIn-tfF}pc4tP>z(xVfNjf|#dXCdAp>8($F)=TUv=VR-`v{!Cs&5;ecFuFg_P4(5w;9&_{FiQLZrP+6qSVEF4K^Z=xJ zFuYMu7t_=-9QM|o<={k8P_!*+eFi9y_Z~i+1jE3o=0Fi!?fwKm&143PuX^3B2$xRTv;MStAPa#K=Fo5` z!_GAWzo;^&GgU>0fS8~9rk-~Njz!nZ3^TvjmzI_Q6?TD2(I`5pF7L`sNH&385~iC) zt1*bM(je~y+ds6u}FmhIH?V#P;g1!O)f-;}_ z{%i-qLNnF#=R1qZ;?9;X0g+Ae1RJlhU=jYSkM^5PjwfU&%*a@pDx%6gmt`ab_R3%6 zmGccvyR7UDg~^8XnKc0RCp|%I@&Z^s^=I;-Uyk}+FI5UynIi-GdS@l2<0IbW^gCqe zxvk#^2K-bB5mM46WEzb{ZnVJg7ch;k#adffFhH*STnNVnV}_ek^vU5S5m)dm7VkJ| zN4d1*8FxY>Pp&JPjy}H_m4pTj1I2J-V_khcx^l@(QidpoEOgBOMMx6%biDmOB_-um z1E8c=i8CJ3gC+c#J1-hwK`y;q*COD9FKQwT+i8vG7O4- z`R4mVH@M+G<0&nl`EbM?ew$UiwrZlzBhV@CV^M}tWGK!Kceq`0`rVwTI)XfA%t7W< zR36VRvN$0t*|zx@(=G?y)z6G=AQ@NO-|rE&Ck71Xgm;Xrt*^=7e)Py~6Pbb>$!kEi zyo4qPxj_Fy0p?TE9n8(m)zt8n#Q?GkZ!C2#QB+X4$kav7PMJlbJW7}XvG~sDg{*gh zjReO9U?c2C>vFo+&Q#QSa>8C|xRC#sGO}9N{uiPSCkSk zNSlC`6RAyc<8KEW5m-#UFjR@Y9W>r15sd>bE9v$|6nEu9A_=ot6wc4tFmj1Qb9*8H zDFCvM2Ui4}A)n)2y>KZT6BB0BnY9#K;!su=mZ3@q8Q@4L5isz^#_$8C9M`gio?!QK zR)>Kep-5@qvDAbfC%o~?94kfqWL6fErK;LUz~`*0k%A_xrlxlP{`S}G7vWU1CZ=E> zGZ<-zzsV{krSINS_2}wL%^e(m*~%8-EL*!zg_Bix7zw$w3cLCi9CRxm=?VP`hFbP3 zFlv)U?0Ij!{sN}QJ(5)8!bqd<(-iXj0_it4i81WUaC_3EoH5T)6J6_HlE4hforzjzp+>fNq3uckm|HYQ+*!c%rW~2`Un}$IHFQOO{mEw^2_%H}~RaOS? z^@l||{`-q7Zil`Gn$72xPh$+`F!UnS3SHD_HuPbLg356u}8^L z&CaQY>NkmViWJwS@C^^ISfg5FkKxby)d1(U;oMTF*%#`k9?=>>X!&PR-Rrb zK+))(@P-qG%`LQ~!5?+sN=*%Nasc!~-bY6EMW(9B$u(mh4^_n_LU-!@HXuOW(sBf} zRX@fHW?k?Ju`wbd@e`s69I z*H3nKrB6}p(`KH1ib83;><2Rt^M1K@9?VnU6b15#5W@TAH%!9$gjl}Ew+e5dnBI^f z9+{EFxc%^+%j_sps=CmpYiZu)b_+Nt1a*J&t(t(dd5J&HH~zR{ z9Gv0q-()5h`(X&F2De$C8`cD^mlA=QM@+E{Ec!}2#JQDw*Au#2`=oAquSsCI>KYdpxb)w9rFHvUMm#mLjX3wQ zK?4^T507E>U<%(YupM3=%z+}(QK7CBgc2`iBlY9c20tbkxRyPkwfa)^i^u9jPr32< zO#?FIQThHoXZIS=x==ZsroE1~&2HZOJolxMM;1&KZtZ+IykbPZ%F?tEaNs&P$-3~B zc;{Ic9t`oYGx?HCDNRA9q5UqAfBwL1(^+K!_DqvpQOZpcQZ*F7{UE4enMTE;$MT6} zazB)5gz$hXpS?4wm0$byx-n1g%L62z&s4NN9EGDmR4DyYCrZW;6(l93PQJ?^UAgZ- zZAcVMbXV_xYdcFNk6%oN(^B**Cx${C_wyjIuv_{Uqo()llyR8W76abV(1i+<@Q^`5ZzVY^FEo(X-K{X!4}jl6hyTwf;{Y z%ldaz%KuH=K>mxl(cH*tX$XctZ&o>+XO|JT8o8?v;=UC8xhas&nwy=yv%9Rhu=UT| zWb+?|fn`Tepc;$XBbst=J`rCYqddaJ%Jq%~Sr<6F|G~oV+>3`wG&M7GI>bCmD%sRz zdleZjOra3Fb?eq_M^vRj?Q=7<(@Vi5D8OI?*F!OJdk0&~&aOUwLBTgMtHW8Ys5-GT zD2hP?sVdank*^}*khAM09R#oP(S}gChmJ|=r{*XF%XoCccuX!r5gQ>b*lY!sf=RhA zI)J5*8!XQr1LmV3>l8?n=_p8S@kdHEXa5^hM>B450WFi{DOOe1%w>5?KfGyEAsa)p ze_=aeYky~C45x}_9$kVX5%?c{+_eN=&%96eZ}9Pb1)H|vVS?IQCK0jo+!l*Nx&07# z$Hx9s!gDSJC6)m^9259V3FVcd5IR%(LXkTMBtv#u8L3hyi|P6Ti_h{|nOgJo?=bvG zU+`Fdyh8vCW_iwk09OA4uWB#64`ghRG^W;nj?PvBQgPb5oMwqv;_;PcW`fj{HW=0! zQ}aCrS)|kv`~J(f^ze9`f}8K?>3MjhLaJ;x630_nQ5+f-CE;{>INEq_FHL2L+T-PO z_(#9!6G=gDbioI>n@R`F%8ilgA7jV*j}rsy zrFLcwDF5oA4xf2x=6(DA@dord^b?K9W|RMBx0a4sxnCT~D${eq55~hQ1qDjjnTUau zSMd>^$i=NgTceU&Wd5p*#U+`Q`r%q$KVw-cg zMY-2^AQ3Pz85>*WeU!MPfCTv%2LFrPfvc5|{*$UNrP_OR+kp5P0mPbpyxd58w%LrH zVl{>zs;~mA_F1X9zlM?P3{uu}7jydi3{7ExA^saf!7vc~E(PqrPmgVUHk*7a(&=4X zYaP#MTQR5T6i6*E+cJ!d;)5iqJse0O2(Uu_fxQJA0SH#LE$(q&X;J6Eo}8u>qYH@Re+|3ezN) z+1Bp<#S3xaqMO0{OKk{0-|zQLAdpOxk^Tj^!GDndt_u7+MCbSaM@IPXZxYVQ`WNiyJ+v3Y5pwr5H))}5a4KX%cHi` z1%~6NjQ21VO;*fiQBdM!Pkv5F{r+u`kGN423YtIT1a&}Ph^8K-soSiL6psi3;bwiZ zwz9|uSDYlp+jX7c!vh8!NVqi~CURld(b3@vLkvJ#b;Cpd_`}=Y=dr_$jt`<+ZP@~a@<;SKPfRWF$RWT(WY10NIObTX~cd29}uuY zU`r>KntRZTfloo3X>rk4Q~@7!pP*N(XwkFR6<)t)h;Q%(Rt^qYR?RpuY_iDyxJb~e zr@s)d>aLPYK?Cq3ikd@oqmxA(j3rEWE+-}wHc$0tG4XIua6k>?WxL;$}&;AjY}gbNv_uWA5uu z8$6NqW3YwMHYdHScL#_jF`9kpjZKu!3u~i58M+{zf3U$QBUNjl=2Vu&23|tsdiXkt z)~ko&bZw~U3JSL)r%5{;yZ*n{zC0Z2w*6bFXhYp0*`nLNCHo#lAtd`=$-aiM=c^lO zv4oI4Tec9g8>7@9TZXZ3W#46sF~;vyzvn%k_js4%c;4fk{~DPw-|scob)KK|vqbRq z^h?YSb_=jZ>9BHU&z?8_5}&tHrSwIfmi7$8>i)IH*H*1@z%SC%)3FTG*3;qh0aeM| z6-OFG!5dgeb?8T>rS3pb0WztoNDA)*nTdPU)DVUieEY1F)Sk~VcQP4kU!L*B zEhP8-&+@?sg26hA2a~-21<+#z^2b-0Tf#%!W#Gq;(xKLc&yy`N9$cD+4t5QU8tAF!H0Fvs$9L-fj(!AeA7E2_GB2Z2KqJVa(^s|w%0Kaj;G z*2}NgIWLE@U%CWH&HmK7O|tU#HbEXvW~ZTw>AGgAN7JX&*#z>~Y-y8!@XE;eRlaDQ z7BF$_D;`_=5girv(J#S?-T)j0kR{KAd$y8DJx_(@W#NQcn@)=ZK<#HDS>ZDs(}8!% zOZ6{T5%%J7AhHqT28k%^6v3Os|9TZKS_n(q&W@`x=Dq65`_6&%;w3-v0i3;JW6uJp53Y-?4)!rZH6R z{m*1;@NocYj56iY$a;Jbn%P|&T$xJEFbD|h2-Ixt&FiH>H0 zkTA&DY-?=n21(P^K+M8N@*oOo>vJ7;)v_cyIsxN4n@;l?vswVIs(N$W+0Lj^vhgP6 zD(YTPqTJi;ORX`tjPuc>)0Dmj2b{E{XBzcF2aEeV_#z( zGjwZ9%Sd}6rp_OXPiM)!*bR!5v*ZJ!3EM54yM;wX6zF|YZCzb*$%Li<1seY-D{RlJ zS6D2zMTgTe2wEEGYhpIe2OT-g#xr-OV?|n;&=JY1&~~f+yj5a?0MywSKZ!))Cpr_! z#SNB8#fE1uF1jMMWNc&PM5sQ)7o0kLcb(HlsM$8MGu$S8hp<=`1qBSaYh4Nkq`Kzb z1QwWIGgDJ*hHnozFIkgNkc0G$M(OC$9r)h$lP^?AIa8maT;15XO3CrL35*}4B^@<= zH=YWwlw{sGP`V>9uy~Q3ABKr(X#s)=jS}+n;lsUMV2R0Gre}9Ot>^&Ld+>jcKAfuW z)LjLJ)b*ZA^A>(vvVL2gFc}4)hgIJDTPcdnm^G)W)KpZCjq}sO=i`UIIu=&p@c58- zxVg&&mR7Ep`kL$k@6uh++bhh|Snua&FIo5KJh6X0X>TWv=q?fC`G zbu%dcZ`E-S-%^&Ie#piM>`*=pv^@EvlG93EU)?aR#q#p-9B1@!SLgxc0)e;GY@M>A zmT7HnZtU)EZx>_#VZGqgsR_d$&$;7=*u>2qBv;+Pb%~w5)Go%%_GWX5<&6@_<9~F9 zTBa~Y-6xU5RovQF2t505!nuVl!u(a&Mu<|9(Dz&503M5G(K%r;F_9~TN4^+Xxt3U4 z(mtYtRt%yLu{bvZM(%NO;$U%4h9Hani&L%N0St}4`8RK@w9nT`B2jix<3w^mA4nRX zKC6})>)GhZi!n@C*U(rQ4WAyAoRL`VpXQ4@LMbyWcy)W_5SS|TrCfGy9#_0}j2f46 zSx`jeFE-Jkes6e&lFd)1HtND9@0C4-Js4;lz`##2Gxb2BK-BB*<_0X2_Z0n*aPb+7 z-5_8lACv-x4{pNw_36n6BBX$*q$Xmd&zXM#X>g#!Xfdvj<^y}h!)%zA{3zXBOc0qN z5~-Nw+xnQ3oR|$lshKnG(>O*Jw#vxqr&fxy?s~M8wVqelKa09ts^xh!;`rHO$xm;@I{B&VZ=KRsh z0gul6R4N4DV#feV|NE>em_@`hB&kC;r>-6Y(m9B$2a`$Q-yT15cs(WCF+K#r#I$$r zdcDsmJ$%x|@jbDdE0|_$`xq<Vg>fY^F5E^vAc4}FdrnwYHL5P z@pY;0lM4S1*BKjLlgDt6Lt!@pPTmzBs^IdaH2X1V7gkGM{6O!+gIGsk+W7eFfc_tB zi&l5S75y4I4Isq+=6_5Zh3$F872R%iw*eCDfENVJ`S;~g2tz^HiYwI88zm&NYF@z7L zDg^k3kB?7~_YPrY=_}k)OpKLJqI62fv?)i5e&J_4;#>NB~QxyK%yPD(; z;_es2#H&eBl<8TMO<}tM!a%JKXAr@n9#gVktmypgyE^`nL{0$>IR%w&fZ3h3t@fk? zpS;(SKOIn;frrRh2UDCAz-3*cR1_dz2C?cBkYf+(+Q^y{u|(k=$i+UtPU>Vm`@He9hcm$4m!NmbKs5fc#;sc#*W49bPycn4 zH{R4xx93ht!?5d(vg=O5@rRAhY3L$Xm9J~-e*Jp%^Xb=1znTi|0{AZ_UjF7kDnxoM zHIwScI*pQSbMHjY$fHit#;FvXQ99@MtZYL$V0m}|?Yn6%oZ(e}$82L#Np(-{#yoX} zxOk0_(&l_`toiv_C7h1CcPv}vaF3rv2DyxETcp3J3)`9_c6)w+D#Lz&Q>-bj`Txu((17G#Cx;XJ6xaWUSyzO zlT$HTk5Z@niRs<%M%hXr5)yOD3lP?2<_B>vxAJr$LBt<8qOEa4#W0eA9u0;fw>Rgl=z`0N+<*Y4r`EOZX_>B@1 ze5_XAD2@f}j(k%7m};q_uw)ZxQ!Kh?Ke>8u-5`MR{D=35?O{`@z31B5(TQ>n*1ekx z@N(4leK*rDtE1g)7Fq_Co}O89W3tFE(9MTU^(-A>B)&kOcE}$j%Md-{>c!d*{gW9o z)uezT-7G$p-1Ko{!cw(&~XOyqw~?VcR8lZm8G;W}VAp zn6XToVxUXrWoeB`c<6DU(ofRkfTAS~u_j0Z>(C4j6tcT z%>zFhF1Fx10*4P1C7gzBt9(2>KDZ;hTlzwEG#@VBtg-U?@mUq_c*HX){*(tki{7O& zS8&h~;3iwjp)~fe3Q)D^NYiWTW+mGR-DSNC_cz^0gzd9IlW0hXoPEf)yz0b2p&C>i zr~l>!kJQ$-wqyw;V2^$tG9yOt`0_7f1qDe-Nm@JOLD;Qu@ExKEJ=M|Lnk40pjVSi?_4algtKZ90ppZ4mUNlHoC#q~Ie1qZ<+M-z({Xcgb z*hG}ajn14!N&ylTvmfqnZ+H6WVNs}G>u9tM+1z!WoAxCJ`|}?oaN1;KXI`paSJX8H zBLof(tK~W$Fzl^~0v9s5kv9*jzT*oFLTE1Ch>&*Mcv{o~v8q6aCqEn{?lk;5KCKVj zYhdBXWp-j|$eRSF#y+(%h(LV^MkCU$Z)y>ewDkTV0}+u>w466w|MC~6-*;>@HD@!> zxJ@j@){2nb(Z&0_u@QIjOwj~&fE?;>L`Fx)fK>w=3tV~(vr5K=;ujkfL`4_ZJ2Cy0 zE@{A2Y+C*9=^6gkM~g2h@{m=*w?xC5GPYyaZ`=q^yPW>!&A6e`KQ!!Oo2H72$m81G zt1Edr*{4}#Qi+gN_OPU6bhMj_SvFTa8ufh7jr2}Bl|<&fKPpH1uJ5U0;yqq{q4PM{ zWppN;V7tCW&K8`jjaCsxA>H=nD`*KpF)=`XT>z`B_HtL)Thz(p1vuEf&6a{9^ySOg z?nnOM#f-)5r|N3~G9&!{94(&`98|vs-eiq>MD&@{rL6Xs&(o+!A z&=0<4BG6{4S>@pEVGDc`0uk&r3k$`y0oC?+eA}(Yf#L^VlZfESlP^a0k;LUZ3J&tq zBE_c1smwQ~0}p{uW6jZIxRXs`EU{^67}u^0Fj?V?&2MN3%ps7ahCQB$TXXsTF^Iz4 z++4h(0w?fsUl`U!45tRu@=wk5G}RbRwN?iO{gOR3E`CuM2yu`PkAR*}8*Pl*-&sfL z9jp2FksP7GhOy{Xnxns{$F(KM{MrIH_G4(&9PTfE?BnOxBpw;#@(q+ZI60@Mr&A># zD*5t;IuGPmRbirMUyJe^$nZLg&YlwZ&xV3fhR zd&EWdTH7Btx394!)`8&_lytul+NozpemlV3J$p0oH=4`&`2Y9>um0g-2&9C~M6cL< zr2jEl!vu)zq$EW}JP+VrZUGTXiq&{&)VzPS=LDZ-VF(R1i#+0sB+r1hKb-j-*{fVg zFFbTop*-JZ;B9$ki6y+_)jZu-4CAW;GOW4|b7$Vp*XlCF2%6M+7#Xpa*c6*H#21T# zBR-FP>v9zt?@=3@8Ps>ir2ZlE>S((~LwMKQ#>jd(z6?q1u$wq;6BU zJGmT7bs`oS8vl6BzBj-6VdE2}DN9+omFeLTv<&X%!|#|k8cE`e5-x@2?WU9^`%Nq1 z%vA7-Y6VJdWJw7L$Jz3mtvpd7V~lIVRYswi0pgywbBFo)1*Tyg;fG8xuKAU}U~Ua& zYElzlLex6DO7L+`Lqa6Gtro#@n)_g>jE$f?$bZS!V>>$zOzt7Cv5=&`cHS{t9BFQJ*QOfCWToGKSzK*~DpxgwHm49_eMDSa(s-{A+Wa z+f+&66+sIg!X>?gq$EE-Eg9EwWW2g({l;GrI}}HZ4GnMV;g-$<6Lz$IqM&Epj)IDb zUs?rL!T2-Xr$+#AL)PDJjwI$gr<(5iG?!{yV$atrZ{76whb^Gb*(|$KP|z%dMi4q# z7pp5qx7zNpfyetLIw7O8%*;y@B60#t{)YYe%W}T6EA{|0s^)0zBHOpLG*zjLs!MM# z&5Jp}JY{8OrWVy2N7@@Zb;9^!EZhS0!|rLQyCM|`+}xK}kMb2XH;>ft_qi6VHLTQ1-x{T+(G5%m%Eq33}+7q8(;jpfkk(l6WJ9u3oM=tgi4nW_G(@nk+U3+ai z4=PkLcOH((=h^S9(L(tn=`s5f#<#!59{pObT@f^?SHd{;=j(9=>{t;t?09VMJdc3W zlgyj_N};~PEApX%fjNvBODV1y^-VtlJyQy85R zk%>0trK?8+nO9DQQ;$7r^~aZphzOUh6^m@O*a=K>KQlx1UB#C@_KjE#F^68JE8Z_f zYfGI+2;~mFM<|4%?IoN>?|>E+3WHw!u_N0qgH_u3o9nx)dp{>kD&2H>V@n?XY=O8^ zW4`6<@#2#kvPaC90(d6ee&l7rmkUjF z6OKIpOp0kF{Tc`Hq29A!7?CceD`LEQbI#Oh6(S&?c zK?&0WzD3*@D}26CqtdmOfY!ups}v=nQzlh+9~&1&D7fjS-#)Uv8~@NFSCmsT(eMj# z=jlW#Vtx976JyJuc=SMTEQeXQngYGE?F|o{K7P~!?OXmhr7dw!wKYxvofGh;_T6}M z)Flvt73kzdKm%jqa=Nsv3~Z7JUMA;%U!c|NVbv!#bm2DoZJDBdQ2|$P-^cAVQea}g zQt!VPglH=@Y$0W*}ot!Ywdj_KWyBzkUU}6%@%ZAFj~N zxWkJohpL;BEv5wqrhLKMo0Vf5zkDXJr-3;J=wV|yRM}B#bVn&pvLXBnuXs5cb-K-V z_=8_gKfb1cojK|1 z1xa$W7RX77X>1-CligpVOfvpT5G$V#MTRjK){_X?Sq_5^m9(u- z`W)b;+}uh7)`27juLp@lz`l)m5lOEEUT>bu!yH^P2M-<|Rm!N86oFvM6DMS2qBF+y z6$(m9DmtnFyfMR=%Z00e&#PHu)EH8OGO_m-TTh!oARjPKH$ORC zR;SjtPpu}}+kz5UB=i9AyzPoj9JaHycB@4x%l#5u9?Paz-RGo50US2D=B&HaRm`2s6zahL6> zzWEb~w1@5bTMY%`>LUnAqoQh0CAnWet`fl{g&&gP=Dr=jcW|@2GD39FXcS*C{r~8M zr^?OcTu3`J&|^Edhr-<4bH%EVbTTSMffjt}bJN!{YPxV3D?Vbda_u zA~#wAU7d3C`CQ=ywY3ROYfLBXVD)f6>#`2iN|oIizc>1FOD}#2de$eXS6Z`quVsCr zo#iH_M-DrbGxd(C3I14ZiiG9v%YZ(i4qJXURU zAV(d#rgJBhKb0Ku^Yarb=F!$x;Ns+*_rz7J+bBSeYe&|B6BbM`;nqEJoczBvK7Ni) zY$7&o{be>TwzjhkkC%b(Nu+1xI-$cG`}px8MhVAnLZ+3Tg$T*+X$IEYS6WI6E%(6H z+K zH#ZzD(3X-x^(!GEaq+TkH#Xd7$LBzKKUi*(Ua>bk3|JV6ArtExH?RT*#;aohju;l| zM>5JFgco`XwW5WB^odv@U86cl!+pD}au@b~w)F6pJ2Y21z2NqI_8y9};o)J}3}&6F zBO)UiC07e!yB-k-L<>IG1%-P=85S0pNHczFZ2Y9O>2>AN;D(g@Oa!yUa-{{bnIJDW zz4{$@XH&~9Yc-s*yC0`eifeSDOcN73AphVhjX32+YG zD4F`c&==p6Rf0yRjfFbs7snM6MF*-y^>l(UjxEI)SI#^|1`2O?t zqJi&)YMT3lANDIVykp|cficf4;@cCJP(~+c?D1=PBrSlzbNTXJI4Y1$iFF7J-`sVD zSODO*?B4x)ZZCERR@iD*81Z}-lJ-`xk0bAe54w_AU0=dc%TRdRKrZYbw#XY(28Uz)wvmdk5rBn>Y}B9rGb8}2QLSYn5&0>yHNiJPayvfzw`g|SCIeUZ~af+*R8O(pY8WWxsCl` z%+?1mFV#UlC0Sr8pr@0NP2PX+;GfQ9w<}($#hPa87vOIl{{25lWxDp|YK3tp+15_J z!czUd)`3^j@z06=*)&R?E2L|AH}6^NXFsn~qpb!xfT#Dt3y~4|j0^P(dvoy@vgeCs bkbP=*Pv?bVDGl3$AF3*AUN2I*`_F#?IRd^_ delta 122206 zcmbrmbzD_pv@ME-pdttYf&wC;f|3f-hzio(-CfeTKv0wxq`MnLx{*e@ySp2t-$c*3 z@4fTReZP0_+kb60Yp?ySFXkL`j4=(L$MEUEaLK>4=Y#ANhxT*bp6qDNPe{D`^pn^Z zL-e?7-!fJyjwxtN`U8?yB!+$lJGChE`#*nPDAWD!J5zVOQcKp`fM9uNB=VTeX8i@D za9Z-*j}4ri+dm$dB&mXv-AqP<4}XMvd3mLz=n4sWmz1y| zc1h;%a2UsZ{ba{m#2@0!q1ZnM7>Xt>G^PWn`>-Q^n=wbY)JMtvoKFPd(X3NpZ$;aD!c5ZH@(74R` z^r*XAB3-H1*guszEj%pjrRlhmw6s-?J9_bTiQ4VuK5ELqp(0b&E%UxI8&k@_r@Ox! zre{2n$UCq+IZab$qobq4g~l1Nv2;#Hmdk|4rW2J}a^g}bH!188^20K$z37u_kDec= z$fRvhcsQ%$AG3Gw>ie@4*;rVlPb_O{YJ`M@U@#aM7>66_4-Zi&C{b+Lqf=5+3JVKA ze*6fV$JX}MzRTYAb7dwfY>N<#Epv+H70H*pD0*_vOsI(`z

F6vkE%k{Zx^bk< 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 + + + + + + + + + diff --git a/apps/web/public/static/locales/en/common.json b/apps/web/public/static/locales/en/common.json index de167455ca..c28f8a3bd5 100644 --- a/apps/web/public/static/locales/en/common.json +++ b/apps/web/public/static/locales/en/common.json @@ -2655,11 +2655,26 @@ "salesforce_if_account_does_not_exist": "If the contact does not exist under an account, create new lead from attendee", "salesforce_create_new_contact_under_account": "Create a new contact under an account based on email domain of attendee and existing contacts", "mass_assign_attributes": "Mass assign attributes", + "reroute_preview_custom_message": "It results in showing custom message. Try changing the response to route to an event", + "reroute_preview_external_redirect": "It results in redirecting to {{externalUrl}}. Try changing the response to route to an event", + "reroute_preview_possible_host": "Possible host", + "current_routing_status": "Current routing status", + "reroute_booking": "Reroute booking", + "reroute_booking_description": "Reroute the booking to different team members", + "verify_new_route": "Verify new route", + "reroute": "Reroute", + "new_routing_status": "New routing status", "salesforce_book_directly_with_attendee_owner": "If attendee exists in Salesforce, book directly with the owner", "salesforce_check_owner_of": "Entity to check owner of to book directly", "account": "Account", "choose_hosts_schedule": "Choose host schedules", "hosts_schedule_description": "You can select a different schedule for each host. Each host's default schedule is chosen by default.", "no_hosts_description": "No hosts assigned, add hosts in assignment tab.", + "reschedule_with_same_timeslot": "Reschedule with same timeslot", + "reschedule_with_same_timeslot_of_new_event": "Reschedule with same timeslot of the new event", + "reschedule_to_the_new_event_with_different_timeslot": "Reschedule to the new event with different timeslot", + "reschedule_with_different_timeslot": "Reschedule with different timeslot", + "we_dont_have_id_for_the_new_event": "We don't have ID for the new event. Please go to the Routing Form and save it again.", + "rerouted_booking_successfully_redirecting_to_booking_page": "Rerouted booking successfully. Redirecting to booking page", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/packages/app-store/BookingPageTagManager.tsx b/packages/app-store/BookingPageTagManager.tsx index b8dcefba97..3c5343d44b 100644 --- a/packages/app-store/BookingPageTagManager.tsx +++ b/packages/app-store/BookingPageTagManager.tsx @@ -76,6 +76,16 @@ export function handleEvent(event: { detail: Record & { type: s }); }); + // Support sending all events to opener which is currently used by ReroutingDialog to identify if the booking is successfully rescheduled. + if (window.opener) { + window.opener.postMessage( + { + type: `CAL:${name}`, + ...data, + }, + "*" + ); + } return true; } diff --git a/packages/app-store/routing-forms/TODO.md b/packages/app-store/routing-forms/TODO.md index 1df208c830..94505be4db 100644 --- a/packages/app-store/routing-forms/TODO.md +++ b/packages/app-store/routing-forms/TODO.md @@ -1,3 +1,8 @@ +## Ready for Review Requirements +- Authorization check for fetch form response and form + + + ## TODO - Routing - [x] Use teamMemberIds to calculate availabilithy as well in addition to doing it in handleNewBooking - [x] Don't let the Routing Form with attributesQueryValue be picked @@ -7,13 +12,32 @@ - [x] Fix bug with Multiselect attribute - [x] Connect Form Response to Booking - [x] Test with non option based attributes and form field input +- [x] We might want to disable attributes query builder for non-orgs. Same for Re-routing. - [ ] Switching from Select to MultiSelect in attribute - [ ] It immediately makes the Routing logic to not work. Fix it. - [ ] It removes the selected option from Routing. Fix it. - [ ] Warnings are needed with recommendation to create new attribute instead in unsupported scenarios. We need to test for more such changes to Attribute types. -- [ ] When choosing 'Value of Field' option in RAQB, show a warning somewhere if all options of the Form field aren't present in the attribute option. - - So, if Form Field is 'What is Comapny Size' with options Enterprise, Large, Medium, Small and Attribute for which Value of 'What is compnay size' has options Enterprise, Large, Medium. It would show a warning that 'Small' option is not present in the attribute. -- [ ] When logic can't be built(Short text maps to an attribute with given set of options but the short text value doesn't match any of the options), the team member matching route throws error but Test Preview still shows the previous value - It show should the error in there. +- [ ] Test Seated events as routing targets. +- Improvements + - [ ] When choosing 'Value of Field' option in RAQB, show a warning somewhere if all options of the Form field aren't present in the attribute option. + - So, if Form Field is 'What is Comapny Size' with options Enterprise, Large, Medium, Small and Attribute for which Value of 'What is compnay size' has options Enterprise, Large, Medium. It would show a warning that 'Small' option is not present in the attribute. + - [ ] When logic can't be built(Short text maps to an attribute with given set of options but the short text value doesn't match any of the options), the team member matching route throws error but Test Preview still shows the previous value - It show should the error in there. + - [ ] When routing to a team that doesn't have the team members assigned that are chosen, we are unable to select those users. FIX it by ignoring the assigned members(except the fixed hosts) and just using the attributes matched team members. +- [x] Start storing eventTypeId in routing Action. +- [x] Make sure that without making the FORM dirty, user can't reroute +- [x] When 'Verify Route' is clicked, it doesn't seem to run the form field logic as there is a warning in console. Fix it. +- [x] Give a proper icon to Reroute button +- [ ] Fetch bookings on window focus but not when rerouting dialog is open. As soon as it is closed, we need to refetch again. +- [ ] Seated Events + - [ ] Disable routing for seated events. Disable only during creation. +- [ ] When rescheduling to a new event, the booking title remains same which will most probably not match the event-type title. This is the behaviour of reschedule. Should we use the new event-type title? +- [ ] What params should we forward to the booking page that we show after rerouting +- [ ] On completing the rerouting just show the new Routing status +- [ ] We need to disallow changing the email identifier field as during a reschedule user isn't allowed to change their email currently. Allowing to change that email response would mean that we support changing email during reschedule which might be disabled for some reasons unknown yet. +- [ ] What if there are changes to Form before rerouting but after initial routing. +- [ ] Not able to prefill rescheduleReason due to a bug in useInitialFormValues hook +- [ ] It is becoming a requirement to have BookingAttempt record to allow to store reroutingFormResponses as well as teamMemberIds in it. Other query params could also be stored later on when needed. It is important to reduce the payload of the query params due to routedTeamMemberIds and reroutingFormResponses + ### Performance Tests and Improvements - [ ] Test with ~1000 team members and ~100 attributes. @@ -34,22 +58,22 @@ - [x] getRoutedUsers tests - [ ] getAvailableSlots - [ ] should use routedTeamMemberIds in availability query +- [ ] RerouteDialog + - [x] BASIC + - [ ] New Tab rescheduling ### Documentation / Tooltip - [ ] Document well that the option label in Routing Form Field and Attribute Option label must be same to connect them. - Due to the connection requirement b/w Attribute Option and Field Option, we use label(lowercased) to match attributes instead of attribute slug - [ ] Fixed hosts of the event will be included through attribute routing as well. They aren't tested for attribute routing logic. +- [ ] When re-routed, the booking page doesn't allow rescheduling/cancellation to avoid any possible issues. We can open it up later. +- [ ] Booking with seats not supported yet. Need to figure out which seats should be re-routed or if re-routing makes sense for it even? +- [ ] Hashed link re-routing doesn't make sense with. With Routing you route to an event from form and it doesn't involve hashed link even if it is enabled +- [ ] User needs to ensure for now that the team event they redirect to has 'Assign all and future members of the team' checked. ### V2.0 - [ ] Fallback for when no team member matches the criteria. - Fallback will be attributes query builder that would match a different set of users. Though the booking will use the team members assigned to the event type, it might be better to be able to identify such a scenario and use a different set of users. It also makes it easy to identify when the fallback scenario happens. - [ ] cal.routedTeamMembersIds query param - Could possible become a big payload and possibly break the URL limit. We could work on a short-lived row in a table that would hold that info and we pass the id of that row only in query param. handleNewBooking can then retrieve the routedTeamMembersIds from that short-lived row and delete the entry after successfully creating a booking. -- [ ] Better ability to test with contact owner from Routing Form Preview itself(if possible). Right now, we need to test the entire booking flow to verify that. - - -## TODO - Attributes -- [ ] Attributes configuration - 1. through DB initially for POC - 2. through CSV upload - 3. through Salesforce Connect \ No newline at end of file +- [ ] Better ability to test with contact owner from Routing Form Preview itself(if possible). Right now, we need to test the entire booking flow to verify that. \ No newline at end of file diff --git a/packages/app-store/routing-forms/components/FormInputFields.tsx b/packages/app-store/routing-forms/components/FormInputFields.tsx index 07baf4bf52..76f6c1e202 100644 --- a/packages/app-store/routing-forms/components/FormInputFields.tsx +++ b/packages/app-store/routing-forms/components/FormInputFields.tsx @@ -1,6 +1,8 @@ import type { App_RoutingForms_Form } from "@prisma/client"; import type { Dispatch, SetStateAction } from "react"; +import { SkeletonText } from "@calcom/ui"; + import getFieldIdentifier from "../lib/getFieldIdentifier"; import { getQueryBuilderConfigForFormFields } from "../lib/getQueryBuilderConfig"; import isRouterLinkedField from "../lib/isRouterLinkedField"; @@ -8,14 +10,21 @@ import { getUIOptionsForSelect } from "../lib/selectOptions"; import { getFieldResponseForJsonLogic } from "../lib/transformResponse"; import type { SerializableForm, FormResponse } from "../types/types"; -type Props = { - form: SerializableForm; +export type FormInputFieldsProps = { + form: Pick, "fields">; + /** + * Make sure that response is updated by setResponse + */ response: FormResponse; setResponse: Dispatch>; + /** + * Identifier of the fields that should be disabled + */ + disabledFields?: string[]; }; -export default function FormInputFields(props: Props) { - const { form, response, setResponse } = props; +export default function FormInputFields(props: FormInputFieldsProps) { + const { form, response, setResponse, disabledFields = [] } = props; const formFieldsQueryBuilderConfig = getQueryBuilderConfigForFormFields(form); @@ -33,6 +42,7 @@ export default function FormInputFields(props: Props) { const Component = widget.factory; const options = getUIOptionsForSelect(field); + const fieldIdentifier = getFieldIdentifier(field); return (
    @@ -48,10 +58,10 @@ export default function FormInputFields(props: Props) { /* @ts-ignore */ required={!!field.required} listValues={options} - data-testid={`form-field-${getFieldIdentifier(field)}`} + disabled={disabledFields?.includes(fieldIdentifier)} + data-testid={`form-field-${fieldIdentifier}`} setValue={(value: number | string | string[]) => { - setResponse((response) => { - response = response || {}; + setResponse(() => { return { ...response, [field.id]: { @@ -68,3 +78,17 @@ export default function FormInputFields(props: Props) { ); } + +export const FormInputFieldsSkeleton = () => { + const numberOfFields = 5; + return ( + <> + {Array.from({ length: numberOfFields }).map((_, index) => ( +
    + + +
    + ))} + + ); +}; diff --git a/packages/app-store/routing-forms/lib/RoutingPages.ts b/packages/app-store/routing-forms/lib/RoutingPages.ts index 182267f6c7..e735b65244 100644 --- a/packages/app-store/routing-forms/lib/RoutingPages.ts +++ b/packages/app-store/routing-forms/lib/RoutingPages.ts @@ -1,16 +1,17 @@ import type { LocalRoute } from "../types/types"; +import { RouteActionType } from "../zod"; export const RoutingPages: { label: string; value: NonNullable["type"] }[] = [ { label: "Custom Page", - value: "customPageMessage", + value: RouteActionType.CustomPageMessage, }, { label: "External Redirect", - value: "externalRedirectUrl", + value: RouteActionType.ExternalRedirectUrl, }, { label: "Event Redirect", - value: "eventTypeRedirectUrl", + value: RouteActionType.EventTypeRedirectUrl, }, ]; diff --git a/packages/app-store/routing-forms/lib/createFallbackRoute.ts b/packages/app-store/routing-forms/lib/createFallbackRoute.ts index c762d3b686..4e4ff8b37a 100644 --- a/packages/app-store/routing-forms/lib/createFallbackRoute.ts +++ b/packages/app-store/routing-forms/lib/createFallbackRoute.ts @@ -1,6 +1,7 @@ import { Utils as QbUtils } from "react-awesome-query-builder"; import type { GlobalRoute, LocalRoute, SerializableRoute } from "../types/types"; +import { RouteActionType } from "../zod"; export const createFallbackRoute = (): Exclude => { const uuid = QbUtils.uuid(); @@ -8,7 +9,7 @@ export const createFallbackRoute = (): Exclude = id: uuid, isFallback: true, action: { - type: "customPageMessage", + type: RouteActionType.CustomPageMessage, value: "Thank you for your interest! We will be in touch soon.", }, queryValue: { id: uuid, type: "group" } as LocalRoute["queryValue"], diff --git a/packages/app-store/routing-forms/lib/processRoute.tsx b/packages/app-store/routing-forms/lib/processRoute.tsx index 3a17eef731..ec5b38ddc1 100644 --- a/packages/app-store/routing-forms/lib/processRoute.tsx +++ b/packages/app-store/routing-forms/lib/processRoute.tsx @@ -14,7 +14,7 @@ export function findMatchingRoute({ form, response, }: { - form: SerializableForm; + form: Pick, "routes" | "fields">; response: Record>; }) { const queryBuilderConfig = getQueryBuilderConfigForFormFields(form); diff --git a/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx b/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx index 15c90a6e03..99d8eb87b5 100644 --- a/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx +++ b/packages/app-store/routing-forms/pages/route-builder/[...appPages].tsx @@ -42,6 +42,7 @@ import { import isRouter from "../../lib/isRouter"; import type { SerializableForm } from "../../types/types"; import type { GlobalRoute, LocalRoute, SerializableRoute, Attribute } from "../../types/types"; +import { RouteActionType } from "../../zod"; type FormFieldsQueryBuilderState = { tree: ImmutableTree; @@ -61,6 +62,7 @@ type LocalRouteWithRaqbStates = LocalRoute & { type Form = inferSSRProps["form"]; type Route = LocalRouteWithRaqbStates | GlobalRoute; +type SetRoute = (id: string, route: Partial) => void; const RoundRobinContactOwnerOverrideSwitch = ({ route, @@ -93,6 +95,42 @@ type AttributesQueryValue = NonNullable; type FormFieldsQueryValue = LocalRoute["queryValue"]; type AttributeRoutingConfig = NonNullable; +/** + * We need eventTypeId in every redirect url action now for Rerouting to work smoothly. + * This hook ensures that it is there as soon as someone lands on a Routing Form and next save would automatically update it for them. + */ +function useEnsureEventTypeIdInRedirectUrlAction({ + route, + eventOptions, + setRoute, +}: { + route: Route; + eventOptions: { label: string; value: string; eventTypeId: number }[]; + setRoute: SetRoute; +}) { + useEffect(() => { + if (isRouter(route)) { + return; + } + + if ( + route.action.type !== RouteActionType.EventTypeRedirectUrl || + // Must not be set already. Could be zero as well for custom + route.action.eventTypeId !== undefined + ) { + return; + } + + const matchingOption = eventOptions.find((eventOption) => eventOption.value === route.action.value); + if (!matchingOption) { + return; + } + setRoute(route.id, { + action: { ...route.action, eventTypeId: matchingOption.eventTypeId }, + }); + }, [eventOptions, setRoute, route.id, (route as unknown as any).action?.value]); +} + const hasRules = (route: Route) => { if (isRouter(route)) return false; route.queryValue.children1 && Object.keys(route.queryValue.children1).length; @@ -106,7 +144,7 @@ const getEmptyRoute = (): Exclude => { return { id: uuid, action: { - type: "eventTypeRedirectUrl", + type: RouteActionType.EventTypeRedirectUrl, value: "", }, // It is actually formFieldsQueryValue @@ -184,7 +222,7 @@ const Route = ({ form: Form; route: Route; routes: Route[]; - setRoute: (id: string, route: Partial) => void; + setRoute: SetRoute; setAttributeRoutingConfig: (id: string, attributeRoutingConfig: Partial) => void; formFieldsQueryBuilderConfig: FormFieldsQueryBuilderConfigWithRaqbFields; attributesQueryBuilderConfig: AttributesQueryBuilderConfigWithRaqbFields | null; @@ -221,6 +259,12 @@ const Route = ({ } }, [isLoading]); + useEnsureEventTypeIdInRedirectUrlAction({ + route, + eventOptions, + setRoute, + }); + const onChangeFormFieldsQuery = ( route: Route, immutableTree: ImmutableTree, @@ -336,7 +380,7 @@ const Route = ({ ) : null; const attributesQueryBuilder = - route.action?.type === "eventTypeRedirectUrl" && isTeamForm ? ( + route.action?.type === RouteActionType.EventTypeRedirectUrl && isTeamForm ? (
    and use only the Team Members that match the following criteria(matches all by default) @@ -453,11 +497,13 @@ const Route = ({ } if (option.value !== "custom") { setRoute(route.id, { - action: { ...route.action, value: option.value }, + action: { ...route.action, value: option.value, eventTypeId: option.eventTypeId }, }); setCustomEventTypeSlug(""); } else { - setRoute(route.id, { action: { ...route.action, value: "custom" } }); + setRoute(route.id, { + action: { ...route.action, value: "custom", eventTypeId: 0 }, + }); setCustomEventTypeSlug(""); } }} diff --git a/packages/app-store/routing-forms/pages/routing-link/getUrlSearchParamsToForward.ts b/packages/app-store/routing-forms/pages/routing-link/getUrlSearchParamsToForward.ts index 83c86a47d3..3ca6067cd4 100644 --- a/packages/app-store/routing-forms/pages/routing-link/getUrlSearchParamsToForward.ts +++ b/packages/app-store/routing-forms/pages/routing-link/getUrlSearchParamsToForward.ts @@ -1,19 +1,13 @@ import type { inferSSRProps } from "@calcom/types/inferSSRProps"; import getFieldIdentifier from "../../lib/getFieldIdentifier"; -import type { LocalRoute } from "../../types/types"; +import type { FormResponse, LocalRoute } from "../../types/types"; import type { getServerSideProps } from "./getServerSideProps"; +type FormResponseValueOnly = { [key: string]: { value: FormResponse[keyof FormResponse]["value"] } }; type Props = inferSSRProps; type AttributeRoutingConfig = NonNullable; -export function getUrlSearchParamsToForward({ - formResponse, - fields, - searchParams, - teamMembersMatchingAttributeLogic, - formResponseId, - attributeRoutingConfig, -}: { +type GetUrlSearchParamsToForwardOptions = { formResponse: Record< string, { @@ -28,7 +22,18 @@ export function getUrlSearchParamsToForward({ formResponseId: number; teamMembersMatchingAttributeLogic: number[] | null; attributeRoutingConfig: AttributeRoutingConfig | null; -}) { + reroutingFormResponses?: FormResponseValueOnly; +}; + +export function getUrlSearchParamsToForward({ + formResponse, + fields, + searchParams, + teamMembersMatchingAttributeLogic, + formResponseId, + attributeRoutingConfig, + reroutingFormResponses, +}: GetUrlSearchParamsToForwardOptions) { type Params = Record; const paramsFromResponse: Params = {}; const paramsFromCurrentUrl: Params = {}; @@ -84,6 +89,9 @@ export function getUrlSearchParamsToForward({ : null), ["cal.routingFormResponseId"]: String(formResponseId), ...(attributeRoutingConfig?.skipContactOwner ? { ["cal.skipContactOwner"]: "true" } : {}), + ...(reroutingFormResponses + ? { ["cal.reroutingFormResponses"]: JSON.stringify(reroutingFormResponses) } + : null), }; const allQueryURLSearchParams = new URLSearchParams(); @@ -98,3 +106,29 @@ export function getUrlSearchParamsToForward({ return allQueryURLSearchParams; } + +export function getUrlSearchParamsToForwardForReroute({ + formResponse, + formResponseId, + fields, + searchParams, + teamMembersMatchingAttributeLogic, + attributeRoutingConfig, + rescheduleUid, + reroutingFormResponses, +}: GetUrlSearchParamsToForwardOptions & { + rescheduleUid: string; + reroutingFormResponses: FormResponseValueOnly; +}) { + searchParams.set("rescheduleUid", rescheduleUid); + searchParams.set("cal.rerouting", "true"); + return getUrlSearchParamsToForward({ + formResponse, + formResponseId, + fields, + searchParams, + teamMembersMatchingAttributeLogic, + attributeRoutingConfig, + reroutingFormResponses, + }); +} diff --git a/packages/app-store/routing-forms/trpc/__tests__/utils.test.ts b/packages/app-store/routing-forms/trpc/__tests__/utils.test.ts index da67d79b4e..f478b7082b 100644 --- a/packages/app-store/routing-forms/trpc/__tests__/utils.test.ts +++ b/packages/app-store/routing-forms/trpc/__tests__/utils.test.ts @@ -2,6 +2,7 @@ import type { BaseWidget } from "react-awesome-query-builder"; import { describe, it, expect, vi, beforeEach } from "vitest"; import type { AttributeType } from "@calcom/prisma/enums"; +import { RouteActionType } from "@calcom/app-store/routing-forms/zod"; import { RoutingFormFieldType } from "../../lib/FieldTypes"; import { RaqbLogicResult } from "../../lib/evaluateRaqbLogic"; @@ -141,7 +142,7 @@ function buildRoute({ }: { id: string; action: { - type: "customPageMessage" | "externalRedirectUrl" | "eventTypeRedirectUrl"; + type: RouteActionType; value: string; }; queryValue: FormFieldsQueryValue; @@ -164,7 +165,7 @@ function buildDefaultCustomPageRoute({ }) { return buildRoute({ id, - action: { type: "customPageMessage", value: "test" }, + action: { type: RouteActionType.CustomPageMessage, value: "test" }, queryValue: { type: "group" } as unknown as FormFieldsQueryValue, attributesQueryValue, }); @@ -193,7 +194,7 @@ describe("findTeamMembersMatchingAttributeLogicOfRoute", () => { { id: "test-route", queryValue: { type: "group" } as unknown as FormFieldsQueryValue, - action: { type: "customPageMessage", value: "test" }, + action: { type: RouteActionType.CustomPageMessage, value: "test" }, }, ], fields: [], @@ -238,7 +239,7 @@ describe("findTeamMembersMatchingAttributeLogicOfRoute", () => { routes: [ { id: "test-route", - action: { type: "customPageMessage", value: "test" }, + action: { type: RouteActionType.CustomPageMessage, value: "test" }, queryValue: { type: "group", } as unknown as FormFieldsQueryValue, diff --git a/packages/app-store/routing-forms/trpc/_router.ts b/packages/app-store/routing-forms/trpc/_router.ts index a7fcdcd555..806634d921 100644 --- a/packages/app-store/routing-forms/trpc/_router.ts +++ b/packages/app-store/routing-forms/trpc/_router.ts @@ -1,3 +1,5 @@ +import { z } from "zod"; + import authedProcedure from "@calcom/trpc/server/procedures/authedProcedure"; import publicProcedure from "@calcom/trpc/server/procedures/publicProcedure"; import { router } from "@calcom/trpc/server/trpc"; @@ -45,6 +47,12 @@ const getHandler = async < return UNSTABLE_HANDLER_CACHE[nameInCache] as unknown as T["default"]; }; +export const ZFormByResponseIdInputSchema = z.object({ + formResponseId: z.number(), +}); + +export type TFormQueryInputSchema = z.infer; + const appRoutingForms = router({ public: router({ response: publicProcedure.input(ZResponseInputSchema).mutation(async ({ ctx, input }) => { @@ -57,6 +65,15 @@ const appRoutingForms = router({ const handler = await getHandler("formQuery", () => import("./formQuery.handler")); return handler({ ctx, input }); }), + getResponseWithFormFields: authedProcedure + .input(ZFormByResponseIdInputSchema) + .query(async ({ ctx, input }) => { + const handler = await getHandler( + "getResponseWithFormFields", + () => import("./getResponseWithFormFields.handler") + ); + return handler({ ctx, input }); + }), formMutation: authedProcedure.input(ZFormMutationInputSchema).mutation(async ({ ctx, input }) => { const handler = await getHandler("formMutation", () => import("./formMutation.handler")); return handler({ ctx, input }); diff --git a/packages/app-store/routing-forms/trpc/getResponseWithFormFields.handler.ts b/packages/app-store/routing-forms/trpc/getResponseWithFormFields.handler.ts new file mode 100644 index 0000000000..904f734a3f --- /dev/null +++ b/packages/app-store/routing-forms/trpc/getResponseWithFormFields.handler.ts @@ -0,0 +1,93 @@ +import type { z } from "zod"; + +import { prisma } from "@calcom/prisma"; +import type { TrpcSessionUser } from "@calcom/trpc/server/trpc"; + +import { TRPCError } from "@trpc/server"; + +import { enrichFormWithMigrationData } from "../enrichFormWithMigrationData"; +import { getSerializableForm } from "../lib/getSerializableForm"; +import type { FormResponse } from "../types/types"; +import type { ZFormByResponseIdInputSchema } from "./_router"; +import { canEditEntity } from "@calcom/lib/entityPermissionUtils"; + +type GetResponseWithFormFieldsOptions = { + ctx: { + user: NonNullable; + }; + input: z.infer; +}; + +async function getResponseWithFormFieldsHandler({ ctx, input }: GetResponseWithFormFieldsOptions) { + const { user } = ctx; + const { formResponseId } = input; + + + const formResponse = await prisma.app_RoutingForms_FormResponse.findUnique({ + where: { + id: formResponseId, + }, + include: { + form: { + include: { + user: { + select: { + id: true, + movedToProfileId: true, + organization: { + select: { + slug: true, + }, + }, + username: true, + theme: true, + brandColor: true, + darkBrandColor: true, + metadata: true, + }, + }, + team: { + select: { + members: true, + slug: true, + parent: { + select: { slug: true }, + }, + parentId: true, + metadata: true, + }, + }, + }, + }, + }, + }); + + if (!formResponse) { + throw new TRPCError({ + code: "NOT_FOUND", + message: "Form response not found", + }); + } + + const form = formResponse.form; + + if (!canEditEntity(form, user.id)) { + throw new TRPCError({ + code: "FORBIDDEN", + message: "You don't have access to this form", + }); + } + + const { UserRepository } = await import("@calcom/lib/server/repository/user"); + const formWithUserProfile = { + ...form, + user: await UserRepository.enrichUserWithItsProfile({ user: form.user }), + }; + + return { + response: formResponse.response as FormResponse, + form: await getSerializableForm({ form: enrichFormWithMigrationData(formWithUserProfile) }), + }; +} + +export default getResponseWithFormFieldsHandler; diff --git a/packages/app-store/routing-forms/trpc/raqbUtils.ts b/packages/app-store/routing-forms/trpc/raqbUtils.ts index 45575ce093..b1c25553cd 100644 --- a/packages/app-store/routing-forms/trpc/raqbUtils.ts +++ b/packages/app-store/routing-forms/trpc/raqbUtils.ts @@ -36,7 +36,7 @@ function compatibleForAttributeAndFormFieldMatch( ) as T extends string[] ? string[] : string; } -const raqbQueryValueUtils = { +export const raqbQueryValueUtils = { isQueryValueARuleGroup: function isQueryValueARuleGroup(queryValue: JsonTree): queryValue is JsonGroup { return queryValue.type === "group"; }, @@ -77,6 +77,12 @@ const raqbQueryValueUtils = { return raqbFieldValueType; }, + isQueryValueEmpty: function isQueryValueEmpty(queryValue: JsonTree | null): queryValue is null { + if (!queryValue) { + return true; + } + return !queryValue.children1; + }, }; /** diff --git a/packages/app-store/routing-forms/trpc/utils.ts b/packages/app-store/routing-forms/trpc/utils.ts index cddbfeb554..3a5392404f 100644 --- a/packages/app-store/routing-forms/trpc/utils.ts +++ b/packages/app-store/routing-forms/trpc/utils.ts @@ -19,7 +19,7 @@ import isRouter from "../lib/isRouter"; import jsonLogic from "../lib/jsonLogic"; import type { SerializableField, OrderedResponses, AttributesQueryValue } from "../types/types"; import type { FormResponse, SerializableForm } from "../types/types"; -import { acrossQueryValueCompatiblity } from "./raqbUtils"; +import { acrossQueryValueCompatiblity, raqbQueryValueUtils } from "./raqbUtils"; const { getAttributesData: getAttributes, @@ -201,7 +201,7 @@ export async function findTeamMembersMatchingAttributeLogicOfRoute( }) ); - if (!attributesQueryValue) { + if (raqbQueryValueUtils.isQueryValueEmpty(attributesQueryValue)) { return { teamMembersMatchingAttributeLogic: null, timeTaken: { diff --git a/packages/app-store/routing-forms/zod.ts b/packages/app-store/routing-forms/zod.ts index faf97a0b8b..60f076b684 100644 --- a/packages/app-store/routing-forms/zod.ts +++ b/packages/app-store/routing-forms/zod.ts @@ -55,6 +55,13 @@ const queryValueSchema = z.object({ properties: z.any(), }); +export enum RouteActionType { + CustomPageMessage = "customPageMessage", + ExternalRedirectUrl = "externalRedirectUrl", + EventTypeRedirectUrl = "eventTypeRedirectUrl", +} + +export const routeActionTypeSchema = z.nativeEnum(RouteActionType); /** * Stricter schema for validating before saving to DB */ @@ -132,12 +139,8 @@ export const zodNonRouterRoute = z.object({ attributesQueryValue: queryValueSchema.brand<"attributesQueryValue">().optional(), isFallback: z.boolean().optional(), action: z.object({ - // TODO: Make it a union type of "customPageMessage" and .. - type: z.union([ - z.literal("customPageMessage"), - z.literal("externalRedirectUrl"), - z.literal("eventTypeRedirectUrl"), - ]), + type: routeActionTypeSchema, + eventTypeId: z.number().optional(), value: z.string(), }), }); @@ -170,3 +173,11 @@ export const zodRoutesView = z.union([z.array(zodRouteView), z.null()]).optional export const appDataSchema = z.any(); export const appKeysSchema = z.object({}); + +// This is different from FormResponse in types.d.ts in that it has label optional. We don't seem to be using label at this point, so we might want to use this only while saving the response when Routing Form is submitted +export const routingFormResponseInDbSchema = z.record( + z.object({ + label: z.string().optional(), + value: z.union([z.string(), z.number(), z.array(z.string())]), + }) +); diff --git a/packages/features/bookings/lib/book-event-form/booking-to-mutation-input-mapper.tsx b/packages/features/bookings/lib/book-event-form/booking-to-mutation-input-mapper.tsx index d2ed62b7d5..c98e490bfa 100644 --- a/packages/features/bookings/lib/book-event-form/booking-to-mutation-input-mapper.tsx +++ b/packages/features/bookings/lib/book-event-form/booking-to-mutation-input-mapper.tsx @@ -47,7 +47,7 @@ export const mapBookingToMutationInput = ({ const routingFormResponseIdParam = searchParams.get("cal.routingFormResponseId"); const routingFormResponseId = routingFormResponseIdParam ? Number(routingFormResponseIdParam) : undefined; const skipContactOwner = searchParams.get("cal.skipContactOwner") === "true"; - + const reroutingFormResponses = searchParams.get("cal.reroutingFormResponses"); return { ...values, user: username, @@ -72,6 +72,8 @@ export const mapBookingToMutationInput = ({ routedTeamMemberIds, routingFormResponseId, skipContactOwner, + // In case of rerouting, the form responses are actually the responses that we need to update. + reroutingFormResponses: reroutingFormResponses ? JSON.parse(reroutingFormResponses) : undefined, }; }; diff --git a/packages/features/bookings/lib/handleNewBooking.ts b/packages/features/bookings/lib/handleNewBooking.ts index 58ea737248..22af828b4e 100644 --- a/packages/features/bookings/lib/handleNewBooking.ts +++ b/packages/features/bookings/lib/handleNewBooking.ts @@ -235,6 +235,8 @@ async function handler( rescheduleReason, luckyUsers, routedTeamMemberIds, + reroutingFormResponses, + routingFormResponseId, ...reqBody } = bookingData; @@ -918,24 +920,12 @@ async function handler( }) ); - // update original rescheduled booking (no seats event) - if (!eventType.seatsPerTimeSlot && originalRescheduledBooking?.uid) { - await prisma.booking.update({ - where: { - id: originalRescheduledBooking.id, - }, - data: { - rescheduled: true, - status: BookingStatus.CANCELLED, - rescheduledBy: reqBody.rescheduledBy, - }, - }); - } - try { booking = await createBooking({ uid, - routedFromRoutingFormResponseId: reqBody.routingFormResponseId, + rescheduledBy: reqBody.rescheduledBy, + routingFormResponseId: routingFormResponseId, + reroutingFormResponses: reroutingFormResponses ?? null, reqBody: { user: reqBody.user, metadata: reqBody.metadata, diff --git a/packages/features/bookings/lib/handleNewBooking/createBooking.ts b/packages/features/bookings/lib/handleNewBooking/createBooking.ts index ab215e6903..8019d7875d 100644 --- a/packages/features/bookings/lib/handleNewBooking/createBooking.ts +++ b/packages/features/bookings/lib/handleNewBooking/createBooking.ts @@ -1,6 +1,8 @@ import { Prisma } from "@prisma/client"; import type short from "short-uuid"; +import type { z } from "zod"; +import type { routingFormResponseInDbSchema } from "@calcom/app-store/routing-forms/zod"; import dayjs from "@calcom/dayjs"; import { isPrismaObjOrUndefined } from "@calcom/lib"; import prisma from "@calcom/prisma"; @@ -21,7 +23,9 @@ type ReqBodyWithEnd = TgetBookingDataSchema & { end: string }; type CreateBookingParams = { uid: short.SUUID; - routedFromRoutingFormResponseId: number | undefined; + routingFormResponseId: number | undefined; + reroutingFormResponses: z.infer | null; + rescheduledBy: string | undefined; reqBody: { user: ReqBodyWithEnd["user"]; metadata: ReqBodyWithEnd["metadata"]; @@ -78,21 +82,20 @@ export async function createBooking({ input, evt, originalRescheduledBooking, - routedFromRoutingFormResponseId, -}: CreateBookingParams) { + routingFormResponseId, + reroutingFormResponses, + rescheduledBy, +}: CreateBookingParams & { rescheduledBy: string | undefined }) { updateEventDetails(evt, originalRescheduledBooking, input.changedOrganizer); - const associatedBookingForFormResponse = routedFromRoutingFormResponseId - ? await getAssociatedBookingForFormResponse(routedFromRoutingFormResponseId) + const associatedBookingForFormResponse = routingFormResponseId + ? await getAssociatedBookingForFormResponse(routingFormResponseId) : null; - const newBookingData = buildNewBookingData({ + const bookingAndAssociatedData = buildNewBookingData({ uid, - // We allow only the first booking to be connected to the form response - // Other bookings could happen due to user doing a booking by using browser back button to reach the same booking form with same query params and changing the time - // Such case isn't what the Routing Form redirected the user to, so we avoid this at the moment. - routedFromRoutingFormResponseId: associatedBookingForFormResponse - ? undefined - : routedFromRoutingFormResponseId, + rescheduledBy, + routingFormResponseId: shouldConnectBookingToFormResponse() ? routingFormResponseId : undefined, + reroutingFormResponses, reqBody, eventType, input, @@ -101,19 +104,38 @@ export async function createBooking({ }); return await saveBooking( - newBookingData, + bookingAndAssociatedData, originalRescheduledBooking, eventType.paymentAppData, eventType.organizerUser ); + + function shouldConnectBookingToFormResponse() { + const isRerouting = !!reroutingFormResponses; + + // During rerouting, we want to connect the new booking to the existing form response for booking being rescheduled(original booking) + if (isRerouting) { + return true; + } + // If not rerouting and there is already an associated booking for the form response, we don't want to connect the new booking to the form response + // We allow only the first booking to be connected to the form response + // Other bookings could happen due to user doing a booking by using browser back button to reach the same booking form with same query params and changing the time + // Such case isn't what the Routing Form redirected the user to, so we avoid this at the moment. + if (associatedBookingForFormResponse) { + return false; + } + return true; + } } async function saveBooking( - newBookingData: Prisma.BookingCreateInput, + bookingAndAssociatedData: ReturnType, originalRescheduledBooking: OriginalRescheduledBooking, paymentAppData: PaymentAppData, organizerUser: CreateBookingParams["eventType"]["organizerUser"] ) { + const { newBookingData, reroutingFormResponseUpdateData, originalBookingUpdateDataForCancellation } = + bookingAndAssociatedData; const createBookingObj = { include: { user: { @@ -143,7 +165,21 @@ async function saveBooking( }); } - return prisma.booking.create(createBookingObj); + /** + * Reschedule(Cancellation + Creation) with an update of reroutingFormResponse should be atomic + */ + return prisma.$transaction(async (tx) => { + if (originalBookingUpdateDataForCancellation) { + await tx.booking.update(originalBookingUpdateDataForCancellation); + } + + const booking = await tx.booking.create(createBookingObj); + if (reroutingFormResponseUpdateData) { + await tx.app_RoutingForms_FormResponse.update(reroutingFormResponseUpdateData); + } + + return booking; + }); } function getEventTypeRel(eventTypeId: EventTypeId) { @@ -164,12 +200,25 @@ function getAttendeesData(evt: Pick) { })); } -function buildNewBookingData(params: CreateBookingParams): Prisma.BookingCreateInput { - const { uid, evt, reqBody, eventType, input, originalRescheduledBooking, routedFromRoutingFormResponseId } = - params; +function buildNewBookingData(params: CreateBookingParams) { + const { + uid, + evt, + reqBody, + eventType, + input, + originalRescheduledBooking, + routingFormResponseId, + reroutingFormResponses, + rescheduledBy, + } = params; const attendeesData = getAttendeesData(evt); const eventTypeRel = getEventTypeRel(eventType.id); + const reroutingFormResponseUpdateData = getReroutingFormResponseUpdateData({ + reroutingFormResponses, + routingFormResponseId, + }); const newBookingData: Prisma.BookingCreateInput = { uid, @@ -206,8 +255,8 @@ function buildNewBookingData(params: CreateBookingParams): Prisma.BookingCreateI } : undefined, - routedFromRoutingFormReponse: routedFromRoutingFormResponseId - ? { connect: { id: routedFromRoutingFormResponseId } } + routedFromRoutingFormReponse: routingFormResponseId + ? { connect: { id: routingFormResponseId } } : undefined, }; @@ -215,6 +264,8 @@ function buildNewBookingData(params: CreateBookingParams): Prisma.BookingCreateI newBookingData.recurringEventId = reqBody.recurringEventId; } + let originalBookingUpdateDataForCancellation: Prisma.BookingUpdateArgs | undefined = undefined; + if (originalRescheduledBooking) { newBookingData.metadata = { ...(typeof originalRescheduledBooking.metadata === "object" && originalRescheduledBooking.metadata), @@ -235,12 +286,53 @@ function buildNewBookingData(params: CreateBookingParams): Prisma.BookingCreateI (attendee) => attendee.email === input.bookerEmail ); } + if (originalRescheduledBooking.recurringEventId) { newBookingData.recurringEventId = originalRescheduledBooking.recurringEventId; } + + if (!evt.seatsPerTimeSlot && originalRescheduledBooking?.uid) { + originalBookingUpdateDataForCancellation = { + where: { + id: originalRescheduledBooking.id, + }, + data: { + rescheduled: true, + status: BookingStatus.CANCELLED, + rescheduledBy: rescheduledBy, + }, + }; + } } - return newBookingData; + return { + newBookingData, + reroutingFormResponseUpdateData, + originalBookingUpdateDataForCancellation, + }; + + function getReroutingFormResponseUpdateData({ + reroutingFormResponses, + routingFormResponseId, + }: { + reroutingFormResponses: z.infer | null; + routingFormResponseId: number | undefined | null; + }) { + if (!routingFormResponseId) { + return null; + } + + if (!reroutingFormResponses) { + return null; + } + + return { + where: { id: routingFormResponseId }, + data: { + response: reroutingFormResponses, + }, + }; + } } export type Booking = Prisma.PromiseReturnType; diff --git a/packages/lib/bookingSuccessRedirect.ts b/packages/lib/bookingSuccessRedirect.ts index 627511845a..f112ea077b 100644 --- a/packages/lib/bookingSuccessRedirect.ts +++ b/packages/lib/bookingSuccessRedirect.ts @@ -57,6 +57,12 @@ export const useBookingSuccessRedirect = () => { query: Record; booking: SuccessRedirectBookingType; }) => { + // Ensures that the param is added both to external redirect url and booking success page URL + query = { + ...query, + "cal.rerouting": searchParams.get("cal.rerouting"), + }; + if (successRedirectUrl) { const url = new URL(successRedirectUrl); // Using parent ensures, Embed iframe would redirect outside of the iframe. diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index 4577eaa93a..af63d6d981 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -631,6 +631,7 @@ model Booking { cancelledBy String? /// @zod.email() rescheduledBy String? + // Ah, made a typo here. Should have been routedFromRoutingFormRe"s"ponse. Live with it :( routedFromRoutingFormReponse App_RoutingForms_FormResponse? @@index([eventTypeId]) diff --git a/packages/prisma/zod-utils.ts b/packages/prisma/zod-utils.ts index d7194b0955..5bece0d056 100644 --- a/packages/prisma/zod-utils.ts +++ b/packages/prisma/zod-utils.ts @@ -13,6 +13,7 @@ import type { } from "zod"; import { appDataSchemas } from "@calcom/app-store/apps.schemas.generated"; +import { routingFormResponseInDbSchema } from "@calcom/app-store/routing-forms/zod"; import dayjs from "@calcom/dayjs"; import { isPasswordValid } from "@calcom/features/auth/lib/isPasswordValid"; import type { FieldType as FormBuilderFieldType } from "@calcom/features/form-builder/schema"; @@ -252,6 +253,11 @@ export const bookingCreateBodySchema = z.object({ routedTeamMemberIds: z.array(z.number()).nullish(), routingFormResponseId: z.number().optional(), skipContactOwner: z.boolean().optional(), + + /** + * Holds the corrected responses of the Form for a booking, provided during rerouting + */ + reroutingFormResponses: routingFormResponseInDbSchema.optional(), }); export const requiredCustomInputSchema = z.union([ @@ -745,4 +751,4 @@ export const getStringAsNumberRequiredSchema = (t: TFunction) => export const bookingSeatDataSchema = z.object({ description: z.string().optional(), responses: bookingResponses, -}); \ No newline at end of file +}); diff --git a/packages/trpc/server/routers/viewer/bookings/get.handler.ts b/packages/trpc/server/routers/viewer/bookings/get.handler.ts index ac00188940..c8e4eeee34 100644 --- a/packages/trpc/server/routers/viewer/bookings/get.handler.ts +++ b/packages/trpc/server/routers/viewer/bookings/get.handler.ts @@ -210,12 +210,23 @@ export async function getBookings({ const bookingSelect = { ...bookingMinimalSelect, uid: true, + responses: true, + /** + * Who uses it - + * 1. We need to be able to decide which booking can have a 'Reroute' action + */ + routedFromRoutingFormReponse: { + select: { + id: true, + }, + }, recurringEventId: true, location: true, eventType: { select: { slug: true, id: true, + title: true, eventName: true, price: true, recurringEvent: true, @@ -225,10 +236,12 @@ export async function getBookings({ seatsShowAvailabilityCount: true, eventTypeColor: true, schedulingType: true, + length: true, team: { select: { id: true, name: true, + slug: true, }, }, }, diff --git a/packages/ui/components/dialog/Dialog.tsx b/packages/ui/components/dialog/Dialog.tsx index c1b09b158d..48e17b04c9 100644 --- a/packages/ui/components/dialog/Dialog.tsx +++ b/packages/ui/components/dialog/Dialog.tsx @@ -90,12 +90,16 @@ type DialogContentProps = React.ComponentProps<(typeof DialogPrimitive)["Content Icon?: IconName; enableOverflow?: boolean; forceOverlayWhenNoModal?: boolean; + /** + * Disables the ability to close the dialog by clicking outside of it. Could be useful when the dialog is doing something critical which might be in progress. + */ + preventCloseOnOutsideClick?: boolean; }; // enableOverflow:- use this prop whenever content inside DialogContent could overflow and require scrollbar export const DialogContent = React.forwardRef( ( - { children, title, Icon: icon, enableOverflow, forceOverlayWhenNoModal, type = "creation", ...props }, + { children, title, Icon: icon, enableOverflow, forceOverlayWhenNoModal, type = "creation", preventCloseOnOutsideClick, ...props }, forwardedRef ) => { const isPlatform = useIsPlatform(); @@ -119,6 +123,11 @@ export const DialogContent = React.forwardRef { + if (preventCloseOnOutsideClick) { + e.preventDefault(); + } + }} className={classNames( "fadeIn bg-default scroll-bar fixed left-1/2 top-1/2 z-50 w-full max-w-[22rem] -translate-x-1/2 -translate-y-1/2 rounded-md text-left shadow-xl focus-visible:outline-none sm:align-middle", props.size == "xl" diff --git a/packages/ui/components/icon/icon-list.mjs b/packages/ui/components/icon/icon-list.mjs index e706bcfb44..42f6e9e226 100644 --- a/packages/ui/components/icon/icon-list.mjs +++ b/packages/ui/components/icon/icon-list.mjs @@ -135,4 +135,5 @@ export const lucideIconList = new Set([ "webhook", "x", "zap", + "waypoints" ]); diff --git a/packages/ui/components/icon/icon-names.ts b/packages/ui/components/icon/icon-names.ts index edb4673d8a..0c86290053 100644 --- a/packages/ui/components/icon/icon-names.ts +++ b/packages/ui/components/icon/icon-names.ts @@ -132,6 +132,7 @@ export type IconName = | "users" | "venetian-mask" | "video" + | "waypoints" | "webhook" | "x" | "zap"; diff --git a/vitest.config.ts b/vitest.config.ts index 1cd76c3983..b710d9cdcc 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,5 +1,4 @@ import { defineConfig } from "vitest/config"; - process.env.INTEGRATION_TEST_MODE = "true"; export default defineConfig({