@snapcall/stream-ui 1.26.0 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,18 @@
1
1
  import {jsxs as $3Sbms$jsxs, Fragment as $3Sbms$Fragment, jsx as $3Sbms$jsx} from "react/jsx-runtime";
2
2
  import {createRoot as $3Sbms$createRoot} from "react-dom/client";
3
3
  import $3Sbms$bowser, {parse as $3Sbms$parse, getParser as $3Sbms$getParser} from "bowser";
4
+ import {QueryClient as $3Sbms$QueryClient, QueryClientProvider as $3Sbms$QueryClientProvider, useMutation as $3Sbms$useMutation, useQuery as $3Sbms$useQuery, useQueryClient as $3Sbms$useQueryClient} from "@tanstack/react-query";
4
5
  import $3Sbms$reacthottoast, {toast as $3Sbms$toast, Toaster as $3Sbms$Toaster1, ToastBar as $3Sbms$ToastBar} from "react-hot-toast";
5
6
  import $3Sbms$styledcomponents, {keyframes as $3Sbms$keyframes, ThemeProvider as $3Sbms$ThemeProvider, ThemeContext as $3Sbms$ThemeContext, css as $3Sbms$css, createGlobalStyle as $3Sbms$createGlobalStyle} from "styled-components";
6
7
  import {useState as $3Sbms$useState, useRef as $3Sbms$useRef, useCallback as $3Sbms$useCallback, useEffect as $3Sbms$useEffect, useContext as $3Sbms$useContext, useMemo as $3Sbms$useMemo, createContext as $3Sbms$createContext, useReducer as $3Sbms$useReducer, useLayoutEffect as $3Sbms$useLayoutEffect, cloneElement as $3Sbms$cloneElement, forwardRef as $3Sbms$forwardRef} from "react";
7
8
  import {Toaster as $3Sbms$Toaster, UserPlus1Icon as $3Sbms$UserPlus1Icon, PhoneCall1Icon as $3Sbms$PhoneCall1Icon, VideoRecorderIcon as $3Sbms$VideoRecorderIcon, Recording2Icon as $3Sbms$Recording2Icon, Monitor2Icon as $3Sbms$Monitor2Icon, Camera2Icon as $3Sbms$Camera2Icon, Select as $3Sbms$Select, SelectTrigger as $3Sbms$SelectTrigger, SelectValue as $3Sbms$SelectValue, SelectContent as $3Sbms$SelectContent, SelectGroup as $3Sbms$SelectGroup, SelectItem as $3Sbms$SelectItem, useToast as $3Sbms$useToast, Copy5Icon as $3Sbms$Copy5Icon, CheckIcon as $3Sbms$CheckIcon, XCircleIcon as $3Sbms$XCircleIcon, Send3Icon as $3Sbms$Send3Icon, AlertTriangleIcon as $3Sbms$AlertTriangleIcon, Dialog as $3Sbms$Dialog, DialogContent as $3Sbms$DialogContent, DialogHeader as $3Sbms$DialogHeader, DialogTitle as $3Sbms$DialogTitle, Tabs as $3Sbms$Tabs, TabsList as $3Sbms$TabsList, TabsTrigger as $3Sbms$TabsTrigger, TabsContent as $3Sbms$TabsContent, Input as $3Sbms$Input, Button as $3Sbms$Button, CopyIcon as $3Sbms$CopyIcon, Form as $3Sbms$Form, FormField as $3Sbms$FormField, FormItem as $3Sbms$FormItem, FormLabel as $3Sbms$FormLabel, FormControl as $3Sbms$FormControl, CreatableSelect as $3Sbms$CreatableSelect, FormMessage as $3Sbms$FormMessage, Textarea as $3Sbms$Textarea, ToastAction as $3Sbms$ToastAction, InfoCircleIcon as $3Sbms$InfoCircleIcon, FlipBackwardIcon as $3Sbms$FlipBackwardIcon, ArrowUpRightIcon as $3Sbms$ArrowUpRightIcon, RawToast as $3Sbms$RawToast, ToastContent as $3Sbms$ToastContent, QrCode1Icon as $3Sbms$QrCode1Icon, Settings1Icon as $3Sbms$Settings1Icon, Upload1Icon as $3Sbms$Upload1Icon, VolumeMaxIcon as $3Sbms$VolumeMaxIcon, Settings3Icon as $3Sbms$Settings3Icon, XCloseIcon as $3Sbms$XCloseIcon, ArrowLeftIcon as $3Sbms$ArrowLeftIcon, HelpCircleIcon as $3Sbms$HelpCircleIcon, Sheet as $3Sbms$Sheet, DialogTrigger as $3Sbms$DialogTrigger, SheetTrigger as $3Sbms$SheetTrigger, SheetHeader as $3Sbms$SheetHeader, SheetClose as $3Sbms$SheetClose, SheetContent as $3Sbms$SheetContent, SheetTitle as $3Sbms$SheetTitle, DialogDescription as $3Sbms$DialogDescription, SheetDescription as $3Sbms$SheetDescription, SpinnerIcon as $3Sbms$SpinnerIcon, CheckCircleIcon as $3Sbms$CheckCircleIcon, PlusCircleIcon as $3Sbms$PlusCircleIcon, Camera1Icon as $3Sbms$Camera1Icon, PlayIcon as $3Sbms$PlayIcon, Trash3Icon as $3Sbms$Trash3Icon, DialogFooter as $3Sbms$DialogFooter, AlertDialog as $3Sbms$AlertDialog, AlertDialogContent as $3Sbms$AlertDialogContent, AlertDialogHeader as $3Sbms$AlertDialogHeader, AlertDialogTitle as $3Sbms$AlertDialogTitle, AlertDialogDescription as $3Sbms$AlertDialogDescription, AlertDialogFooter as $3Sbms$AlertDialogFooter, AlertDialogCancel as $3Sbms$AlertDialogCancel, AlertDialogAction as $3Sbms$AlertDialogAction, TrashIcon as $3Sbms$TrashIcon, Hourglass3Icon as $3Sbms$Hourglass3Icon, MicrophoneOffIcon as $3Sbms$MicrophoneOffIcon, RefreshCw3Icon as $3Sbms$RefreshCw3Icon, QrCodeIcon as $3Sbms$QrCodeIcon, Avatar as $3Sbms$Avatar, SlashCircle1Icon as $3Sbms$SlashCircle1Icon, CalendarIcon as $3Sbms$CalendarIcon, Microphone1Icon as $3Sbms$Microphone1Icon, VideoRecorderOffIcon as $3Sbms$VideoRecorderOffIcon, MicrophoneOff1Icon as $3Sbms$MicrophoneOff1Icon, AlertCircleIcon as $3Sbms$AlertCircleIcon, Lock1Icon as $3Sbms$Lock1Icon, Lock3Icon as $3Sbms$Lock3Icon, VoicemailIcon as $3Sbms$VoicemailIcon} from "@snapcall/design-system";
8
9
  import "inobounce";
9
- import {QueryClient as $3Sbms$QueryClient, QueryClientProvider as $3Sbms$QueryClientProvider, useQuery as $3Sbms$useQuery, useQueryClient as $3Sbms$useQueryClient, useMutation as $3Sbms$useMutation} from "react-query";
10
10
  import {useTranslation as $3Sbms$useTranslation, initReactI18next as $3Sbms$initReactI18next, Trans as $3Sbms$Trans} from "react-i18next";
11
11
  import $3Sbms$i18next from "i18next";
12
12
  import {useOverlayTriggerState as $3Sbms$useOverlayTriggerState} from "react-stately";
13
13
  import {v4 as $3Sbms$v4} from "uuid";
14
14
  import {WebSocketTransport as $3Sbms$WebSocketTransport, Peer as $3Sbms$Peer} from "protoo-client";
15
- import {addBreadcrumb as $3Sbms$addBreadcrumb, setTag as $3Sbms$setTag} from "@sentry/browser";
15
+ import {captureMessage as $3Sbms$captureMessage, captureException as $3Sbms$captureException, addBreadcrumb as $3Sbms$addBreadcrumb, setTag as $3Sbms$setTag} from "@sentry/browser";
16
16
  import {Producer as $3Sbms$Producer} from "mediasoup-client/lib/Producer";
17
17
  import {Device as $3Sbms$Device} from "mediasoup-client";
18
18
  import {SelfieSegmentation as $3Sbms$SelfieSegmentation} from "@mediapipe/selfie_segmentation";
@@ -30,6 +30,7 @@ function $parcel$interopDefault(a) {
30
30
 
31
31
 
32
32
 
33
+
33
34
  // https://github.com/voodoocreation/ts-deepmerge/blob/master/src/index.ts
34
35
  const $365e765f9890497b$var$isObject = (obj)=>{
35
36
  if (typeof obj === "object" && obj !== null) {
@@ -353,27 +354,27 @@ const $a3e657fb86ae23f3$export$604ba5624273df44 = ()=>{
353
354
 
354
355
 
355
356
  var $cdb0576f0fea19f0$exports = {};
356
- $cdb0576f0fea19f0$exports = JSON.parse('{"header":{"free":"Free version"},"loader":{"connection":"Connecting..."},"common":{"new":"new"},"notifications":{"error":"Error","screensharingError":"An error occured when trying to toggle screensharing","microphoneError":"An error occured when trying to toggle the microphone","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","noCamera":"No camera available","blockedMicrophonePopupTitle":"Camera and microphone are blocked","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","reload":"Reload","criticalError":"A critical error has occurred (error {{code}}).","agentJoinError":"An error occured while trying to join the room as an agent","close":"Close","connectedTo":"Connected to {{name}}","recording":"Recording in progress","invitationSentToFailed":"Sent to {{ name }} failed.","errorOccuredCode":"An error occured (error {{code}})."},"recordingPopup":{"recordingStartTitle":"Recording about to start.","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","dismiss":"Dismiss"},"requestAccess":{"wantToJoin":"<bold>{{name}}</bold> wants to join!","deny":"Deny","admit":"Admit","defaultName":"An user"},"endView":{"goBack":"Go back to call","callEnded":"The call has ended","callNoLongerActive":"This call is no longer active. Thank you for participating.","callLeft":"You have left the call","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard"},"menu":{"title":"Menu","new":"NEW","openNewTab":"Open new tab","quickConnect":"Quick Connect","pictureInPicture":"Picture-in-Picture","screenSharing":"Screen sharing","stopRecord":"Stop record","startRecord":"Record call"},"blockedFeature":{"titleConnected":"Upgrade to Pro","titleGuest":"Feature not available","descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissGuest":"Okay","dismissConnected":"Upgrade to Pro"},"copyLink":{"title":"Copy link","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","copied":"Link copied to clipboard","copy":"Copy"},"quickConnect":{"title":"Quick Connect","scanTitle":"Scan QR Code","scan":"Scan this QR code with your phone camera to open the call."},"settings":{"title":"Settings","preferences":"Preferences","language":"Language","devices":"Devices","help":"Help","helpCenter":"Go to help center","selectYourMicrophone":"Select your preferred microphone","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language"},"audioMenu":{"title":"Audio","blockedMicrophone":"Microphone is blocked.","microphonePermissions":"Please accept microphone sharing before accessing these options."},"videoMenu":{"title":"Video","lowDef":"Low definition (240p)","standardDef":"Standard definition (480p)","highDef":"High definition (720p)","blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","sendResolution":"Send Resolution (maximum)"},"shareLink":{"title":"Share link","title2":"Share a link","invalid":"Invalid link","sentToUsers":"Link sent to users","sentToUser":"Link sent to {{user}}","failed":"Failed to send link","poweredBy":"Powered by","invoice":"{{user}} sent you an invoice.","pay":"Pay"},"invitePeople":{"PublicLink":"Public link","invitePeople":"Invite people","joinTheCall":"Join the call","inviteRecordClip":"Invite to record clip","inviteRecordVideo":"Record a video","inviteRecordAudio":"Record an audio","inviteRecordScreen":"Record a screen","inviteRecordPhoto":"Take a photo","inviteCall":"Invite to join call","sharePublicLink":"Share public link","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","addEmailToInvite":"Add an email to invite.","email":"Email","emailPlaceholder":"Eg. john@acme.com","invite":"Invite","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","addEmails":"Add emails...","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","error":"Failed to send, please try again later.","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","message":"Message"},"youtube":{"title":"Watch Together","url":"YOUTUBE URL","invalid":"Invalid YouTube URL","share":"Watch now"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"title":"Snapshot","shared":"Snapshot shared.","sentToUsers":"Snapshot sent to users.","sentToUser":"Snapshot sent to {{user}}","save":"Save photo","error":"An error occured when trying to send the snapshot"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"requestDevice":{"requestInput":"Request input devices","request":"{{user}} would like you to share your {{device}}","timedOut":"Your request has timed out.","declined":"Your request has been declined.","userDeclined":"{{user}} has declined your request."},"leave":{"title":"Leave","leaveCall":"Leave call","endCall":"End call for all"},"virtualBackground":{"title":"Virtual Background","setBackground":"Set Background"},"misc":{"someone":"Someone","camera":"Camera","microphone":"Microphone","photo":"Photo","video":"Video","screen":"Screen","screenshot":"Screenshot","speaker":"Speaker","user":"User","open":"Open","from":"From","accept":"Accept","decline":"Decline","you":"You","cancel":"Cancel","confirm":"Confirm","remove":"Remove","proceed":"Proceed","audio":"Audio"},"greeting":{"mainTitle":"Welcome to SnapCall","sideTitle":"Hold tight, you\'re next!","sideDescription":"Please enter your name and adjust your camera and microphone","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","footerTitle":"Powered by SnapCall","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","cameraDisabled":"Camera is Off","microphoneDisabled":"Microphone is Off","cameraEnabled":"Camera is On","microphoneEnabled":"Microphone is On","scheduleACall":"Schedule a call","requestACall":"Request a call","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","setting":"Settings","askToJoin":"Ask to join","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in.","cantJoinCall":"You can\u2019t join this call","someoneDenied":"Someone in the call denied your request to join.","askingLetIn":"Asking to be let in...","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","cantWait":"Can\'t wait?","whatYouCanDo":"Here\u2019s what you can do","leaveMessage":"Leave a message","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","recordVideo":"Record video","recordVoice":"Record voice","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","mediaDenied":"Microphone and camera access denied","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar."},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","limit":"Video recording limited to 5 min.","replyAttached":"Your reply has been attached","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","openThread":"Open thread","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","clipSubmissionDescription":"Thank you for using SnapCall.","submissionTitle":"Thank you for your submission!","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","confirmRemovalTitle":"Confirm deletion","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","waitVideo":"A video may take up to 15 seconds to be ready.","elementCaptureSuccess":"{{ type }} captured successfully","takeNewElement":"Capture a new {{ type }}","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","allowAccess":"Allow access","okay":"Okay","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","permissionDeniedTitle":"Something went wrong!","permissionDeniedDescription":"Without access to the camera and microphone, you won\'t be able to capture photos or videos to share with the support team. Please grant access in your browser settings.","photoInstructionsTitle":"Ready to snap a photo?","videoInstructionsTitle":"Ready to record a video?","screenShareInstructionsTitle":"Ready to share your screen?","audioInstructionsTitle":"Ready to record a voice message?","instructions":{"selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically."},"switchToMobileTitle":"Switch to your mobile device","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","useDesktopVersion":"Use the desktop version","scanQRCode":"Scan this QR code with a compatible device.","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","screenTitle":"Ready to capture your screen?","loggedAs":"Logged as","logIn":"Log in","audioLevelNotification":{"shortVideo":{"title":"Short video.","description":"This video is too short to get context."},"noSound":{"title":"No sound detected.","description":"Make sure your microphone is activated."},"spokenWordsQuestion":{"title":"Spoken words.","description":"Does your video include enough spoken details?"},"spokenWordsWarning":{"title":"No spoken words.","description":"The clip includes barely any spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","rememberSpeaking":"Remember to speak to provide context.","noSound":"No sound detected."},"chooseWhatYouWantToShare":"Choose what you want to share","startScreenRecording":"Start screen recording","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAccess":"No camera access","noMicrophoneAccess":"No microphone access","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","noCameraAccessDescription":"No camera access Allow camera access in your browser.","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","showQrCode":"Show QR code","upload":"Upload"}}');
357
+ $cdb0576f0fea19f0$exports = JSON.parse('{"header":{"free":"Free version"},"loader":{"connection":"Connecting..."},"common":{"new":"new"},"notifications":{"error":"Error","screensharingError":"An error occured when trying to toggle screensharing","microphoneError":"An error occured when trying to toggle the microphone","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","noCamera":"No camera available","blockedMicrophonePopupTitle":"Camera and microphone are blocked","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","reload":"Reload","criticalError":"A critical error has occurred (error {{code}}).","agentJoinError":"An error occured while trying to join the room as an agent","close":"Close","connectedTo":"Connected to {{name}}","recording":"Recording in progress","invitationSentToFailed":"Sent to {{ name }} failed.","errorOccuredCode":"An error occured (error {{code}})."},"recordingPopup":{"recordingStartTitle":"Recording about to start.","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","dismiss":"Dismiss"},"requestAccess":{"wantToJoin":"<bold>{{name}}</bold> wants to join!","deny":"Deny","admit":"Admit","defaultName":"An user"},"endView":{"goBack":"Go back to call","callEnded":"The call has ended","callNoLongerActive":"This call is no longer active. Thank you for participating.","callLeft":"You have left the call","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","howWasYourExperience":"How was your experience?","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"menu":{"title":"Menu","new":"NEW","openNewTab":"Open new tab","quickConnect":"Quick Connect","pictureInPicture":"Picture-in-Picture","screenSharing":"Screen sharing","stopRecord":"Stop record","startRecord":"Record call"},"blockedFeature":{"titleConnected":"Upgrade to Pro","titleGuest":"Feature not available","descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissGuest":"Okay","dismissConnected":"Upgrade to Pro"},"copyLink":{"title":"Copy link","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","copied":"Link copied to clipboard","copy":"Copy"},"quickConnect":{"title":"Quick Connect","scanTitle":"Scan QR Code","scan":"Scan this QR code with your phone camera to open the call."},"settings":{"title":"Settings","preferences":"Preferences","language":"Language","devices":"Devices","help":"Help","helpCenter":"Go to help center","selectYourMicrophone":"Select your preferred microphone","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language"},"audioMenu":{"title":"Audio","blockedMicrophone":"Microphone is blocked.","microphonePermissions":"Please accept microphone sharing before accessing these options."},"videoMenu":{"title":"Video","lowDef":"Low definition (240p)","standardDef":"Standard definition (480p)","highDef":"High definition (720p)","blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","sendResolution":"Send Resolution (maximum)"},"shareLink":{"title":"Share link","title2":"Share a link","invalid":"Invalid link","sentToUsers":"Link sent to users","sentToUser":"Link sent to {{user}}","failed":"Failed to send link","poweredBy":"Powered by","invoice":"{{user}} sent you an invoice.","pay":"Pay"},"invitePeople":{"PublicLink":"Public link","invitePeople":"Invite people","joinTheCall":"Join the call","inviteRecordClip":"Invite to record clip","inviteRecordVideo":"Record a video","inviteRecordAudio":"Record an audio","inviteRecordScreen":"Record a screen","inviteRecordPhoto":"Take a photo","inviteCall":"Invite to join call","sharePublicLink":"Share public link","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","addEmailToInvite":"Add an email to invite.","email":"Email","emailPlaceholder":"Eg. john@acme.com","invite":"Invite","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","addEmails":"Add emails...","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","error":"Failed to send, please try again later.","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","message":"Message"},"youtube":{"title":"Watch Together","url":"YOUTUBE URL","invalid":"Invalid YouTube URL","share":"Watch now"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"title":"Snapshot","shared":"Snapshot shared.","sentToUsers":"Snapshot sent to users.","sentToUser":"Snapshot sent to {{user}}","save":"Save photo","error":"An error occured when trying to send the snapshot"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"requestDevice":{"requestInput":"Request input devices","request":"{{user}} would like you to share your {{device}}","timedOut":"Your request has timed out.","declined":"Your request has been declined.","userDeclined":"{{user}} has declined your request."},"leave":{"title":"Leave","leaveCall":"Leave call","endCall":"End call for all"},"virtualBackground":{"title":"Virtual Background","setBackground":"Set Background"},"misc":{"someone":"Someone","camera":"Camera","microphone":"Microphone","photo":"Photo","video":"Video","screen":"Screen","screenshot":"Screenshot","speaker":"Speaker","user":"User","open":"Open","from":"From","accept":"Accept","decline":"Decline","you":"You","cancel":"Cancel","confirm":"Confirm","remove":"Remove","proceed":"Proceed","audio":"Audio"},"greeting":{"mainTitle":"Welcome to SnapCall","sideTitle":"Hold tight, you\'re next!","sideDescription":"Please enter your name and adjust your camera and microphone","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","footerTitle":"Powered by SnapCall","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","cameraDisabled":"Camera is Off","microphoneDisabled":"Microphone is Off","cameraEnabled":"Camera is On","microphoneEnabled":"Microphone is On","scheduleACall":"Schedule a call","requestACall":"Request a call","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","setting":"Settings","askToJoin":"Ask to join","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in.","cantJoinCall":"You can\u2019t join this call","someoneDenied":"Someone in the call denied your request to join.","askingLetIn":"Asking to be let in...","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","cantWait":"Can\'t wait?","whatYouCanDo":"Here\u2019s what you can do","leaveMessage":"Leave a message","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","recordVideo":"Record video","recordVoice":"Record voice","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","mediaDenied":"Microphone and camera access denied","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar."},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","limit":"Video recording limited to 5 min.","replyAttached":"Your reply has been attached","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","openThread":"Open thread","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","clipSubmissionDescription":"Thank you for using SnapCall.","submissionTitle":"Thank you for your submission!","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","confirmRemovalTitle":"Confirm deletion","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","waitVideo":"A video may take up to 15 seconds to be ready.","elementCaptureSuccess":"{{ type }} captured successfully","takeNewElement":"Capture a new {{ type }}","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","allowAccess":"Allow access","okay":"Okay","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","permissionDeniedTitle":"Something went wrong!","permissionDeniedDescription":"Without access to the camera and microphone, you won\'t be able to capture photos or videos to share with the support team. Please grant access in your browser settings.","photoInstructionsTitle":"Ready to snap a photo?","videoInstructionsTitle":"Ready to record a video?","screenShareInstructionsTitle":"Ready to share your screen?","audioInstructionsTitle":"Ready to record a voice message?","instructions":{"selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically."},"switchToMobileTitle":"Switch to your mobile device","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","useDesktopVersion":"Use the desktop version","scanQRCode":"Scan this QR code with a compatible device.","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","screenTitle":"Ready to capture your screen?","loggedAs":"Logged as","logIn":"Log in","audioLevelNotification":{"shortVideo":{"title":"Short video.","description":"This video is too short to get context."},"noSound":{"title":"No sound detected.","description":"Make sure your microphone is activated."},"spokenWordsQuestion":{"title":"Spoken words.","description":"Does your video include enough spoken details?"},"spokenWordsWarning":{"title":"No spoken words.","description":"The clip includes barely any spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","rememberSpeaking":"Remember to speak to provide context.","noSound":"No sound detected."},"chooseWhatYouWantToShare":"Choose what you want to share","startScreenRecording":"Start screen recording","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAccess":"No camera access","noMicrophoneAccess":"No microphone access","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","noCameraAccessDescription":"No camera access Allow camera access in your browser.","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","showQrCode":"Show QR code","upload":"Upload"}}');
357
358
 
358
359
 
359
360
  var $d94166210f763d5e$exports = {};
360
- $d94166210f763d5e$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Microphone is blocked.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call is now ended","callIsOver":"The call is over or deleted","callLeft":"You left the call","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","tooLate":"You arrived too late"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video clip now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Open thread","permissionDeniedDescription":"Without access to the camera and microphone, you won\'t be able to capture photos or videos to share with the support team. Please grant access in your browser settings.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
361
+ $d94166210f763d5e$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Microphone is blocked.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call is now ended","callIsOver":"The call is over or deleted","callLeft":"You left the call","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","howWasYourExperience":"How was your experience?","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","tooLate":"You arrived too late","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video clip now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Open thread","permissionDeniedDescription":"Without access to the camera and microphone, you won\'t be able to capture photos or videos to share with the support team. Please grant access in your browser settings.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
361
362
 
362
363
 
363
364
  var $dcf57489ec338826$exports = {};
364
- $dcf57489ec338826$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Votre micro est bloqu\xe9.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"Vous n\'avez pas acc\xe8s \xe0 cette fonctionnalit\xe9. Souscrivez au plan Pro pour d\xe9bloquer toutes les fonctionnalit\xe9s de SnapCall.","descriptionGuest":"Vous participez \xe0 un appel cr\xe9\xe9 avec la version gratuite de SnapCall. Cette fonctionnalit\xe9 n\'est disponible qu\'avec une version Pro.","dismissConnected":"Souscrire \xe0 Pro","dismissGuest":"D\'accord","titleConnected":"Souscrire au plan Pro","titleGuest":"Fonctionnalit\xe9 non disponible"},"common":{"new":"new"},"copyLink":{"copied":"Lien copi\xe9 dans le presse-papier","copy":"Copier","description":"Copier le lien dans le presse-papiers","error":"Une erreur est survenue pendant la copie du lien dans le presse-papier","title":"Copier le lien"},"endView":{"callEnded":"Cet appel est termin\xe9","callIsOver":"Cet appel est termin\xe9 ou supprim\xe9","callLeft":"Vous avez quitt\xe9 l\'appel","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"Impossible de rejoindre l\'appel","fullDescription":"Limite d\'utilisateurs atteinte. Merci de rejoindre l\'appel ult\xe9rieurement.","goBack":"Retourner dans l\'appel","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","tooLate":"Vous \xeates arriv\xe9 trop tard"},"gdpr":{"recordedWarning":"Pour am\xe9liorer la qualit\xe9 de notre service, cet appel va \xeatre enregistr\xe9."},"greeting":{"askToJoin":"Demander \xe0 rejoindre","askingLetIn":"Demande de participation...","cameraDisabled":"Cam\xe9ra d\xe9sactiv\xe9e","cameraEnabled":"Cam\xe9ra activ\xe9e","canceledCallRequest":"La demande d\'appel sera annul\xe9e et vous serez redirig\xe9 vers la page de planification des appels.","cantJoinCall":"Vous ne pouvez pas rejoindre cet appel","cantWait":"Vous ne souhaitez pas attendre ?","cantWaitLeaveMessage":"Vous ne pouvez pas attendre ? Vous pouvez laisser un message et vous serez contact\xe9 dans les plus brefs d\xe9lais.","clickOnLock":"Cliquez sur l\'ic\xf4ne de verrouillage <1></1> dans la barre de votre navigateur.","footerDescription":"D\xe9couvrez SnapCall, ajoutez de la vid\xe9o en temps r\xe9el \xe0 n\'importe quelle plateforme, produit ou service.","footerTitle":"Propuls\xe9 par SnapCall","leaveMessage":"Laisser un message","mainTitle":"Bienvenue sur SnapCall","mediaDenied":"Acc\xe8s au microphone et \xe0 la cam\xe9ra refus\xe9","microphoneDisabled":"Microphone d\xe9sactiv\xe9","microphoneEnabled":"Microphone activ\xe9","name":"Nom","nameDescription":"Ce nom sera affich\xe9 \xe0 tous les participants","namePlaceholder":"Ex. Lucie ou Pierre","nameSubmit":"Rejoindre la conversation","recordVideo":"Enregistrer une vid\xe9o","recordVoice":"Enregistrer un message vocal","requestACall":"Solliciter un appel maintenant","scheduleACall":"Planifier un appel","setting":"Param\xe8tres","sideDescription":"Veuillez entrer votre nom et configurer votre cam\xe9ra et microphone.","sideTitle":"C\'est bient\xf4t votre tour !","someoneDenied":"Quelqu\'un lors de l\'appel a refus\xe9 votre demande de participation.","takeFewMinute":"Cela peut prendre quelques minutes selon la disponibilit\xe9 des participants.","whatYouCanDo":"Voici ce que vous pouvez faire","youWillJoinWhenSomeoneLetsYou":"Votre acc\xe8s \xe0 l\'appel sera autoris\xe9 par un membre de l\'\xe9quipe {{ companyName }}."},"header":{"free":"Version gratuite"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Ajoutez un e-mail pour inviter.","addEmails":"Ajouter des e-mails...","copyCallLinkDescription":"Copiez ce lien et envoyez-le \xe0 toute personne que vous souhaitez inviter \xe0 rejoindre l\'appel.","copyClipLinkDescription":"Copiez ce lien et envoyez-le \xe0 toute personne que vous souhaitez inviter \xe0 enregistrer un clip.","email":"Email","emailPlaceholder":"Ex. jean@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"\xc9chec de l\'envoi, veuillez r\xe9essayer plus tard.","invalidEmail":"Format d\'email invalide.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Envoy\xe9 \xe0 {{ name }}","invitationSentTo_other":"Envoy\xe9 \xe0 {{ name }} et {{ otherEmailsCount }}+","invite":"Inviter","inviteByEmail":"Inviter par email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Inviter \xe0 rejoindre l\'appel","inviteCallDefaultMessage":"Vous \xeates invit\xe9 \xe0 rejoindre notre appel vid\xe9o. Cliquez sur le lien pour vous connecter instantan\xe9ment.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Veuillez enregistrer votre clip vid\xe9o maintenant et nous fournir plus de contexte pour mieux vous aider.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Inviter \xe0 enregistrer un clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Lien pour rejoindre l\'appel","linkToRecordAClip":"Lien pour enregistrer un clip","message":"Message","sharePublicLink":"Partager le lien public"},"leave":{"endCall":"Terminer l\'appel","leaveCall":"Quitter l\'appel","title":"Quitter"},"loader":{"connection":"Connexion..."},"menu":{"new":"NOUVEAU","openNewTab":"Ouvrir un nouvel onglet","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Partage d\'\xe9cran","startRecord":"Enregistrer l\'appel","stopRecord":"Arr\xeater l\'enregistrement","title":"Menu"},"misc":{"accept":"Accepter","audio":"Audio","camera":"Cam\xe9ra","cancel":"Annuler","confirm":"Confirmer","decline":"D\xe9cliner","from":"Depuis","microphone":"Micro","open":"Ouvrir","photo":"Photo","proceed":"Proc\xe9der","remove":"Enlever","screen":"\xc9cran","screenshot":"Capture d\'\xe9cran","someone":"Quelqu\'un","speaker":"Haut-parleur","user":"Utilisateur","video":"Vid\xe9o","you":"Vous"},"notifications":{"agentJoinError":"Une erreur est survenue en essayant de rejoindre la salle en tant qu\'agent","blockedMicrophonePopup":"SnapCall a besoin d\'acc\xe9der \xe0 votre cam\xe9ra et micro. Cliquez sur l\'ic\xf4ne de cam\xe9ra bloqu\xe9e dans la barre d\'adresse du navigateur.","blockedMicrophonePopupTitle":"Votre cam\xe9ra et micro sont bloqu\xe9s","cameraError":"Une erreur est survenue pendant l\'activation de la cam\xe9ra","cameraRotateError":"Une erreur est survenue pendant la rotation de la cam\xe9ra","close":"Fermer","connectedTo":"Connect\xe9 \xe0 {{name}}","criticalError":"Une erreur critique est survenue (erreur {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"Une erreur est survenue pendant l\'activation du micro","noCamera":"Aucune cam\xe9ra disponible","recording":"Enregistrement en cours","reload":"Recharger","screensharingError":"Une erreur est survenue pendant l\'activation du partage d\'\xe9cran","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scannez ce QR code avec votre t\xe9l\xe9phone pour ouvrir l\'appel.","scanTitle":"Scannez le QR Code","title":"Quick Connect"},"recorder":{"addMore":"Ajouter plus","addNewClip":"Ajouter un nouveau clip","allowAccess":"Autoriser l\'acc\xe8s","allowCamMicAccess":"Autoriser acc\xe8s cam\xe9ra/micro","allowScreenShareAccess":"Autoriser l\'acc\xe8s au partage d\'\xe9cran","attachElements_one":"Joindre {{ type }} au ticket","attachElements_other":"Joindre {{ count }} \xe9l\xe9ments","audioInstructionsTitle":"Pr\xeat \xe0 enregistrer un message vocal\xa0?","audioLevelNotification":{"noSound":{"description":"Assurez-vous que votre microphone est activ\xe9.","title":"Aucun son d\xe9tect\xe9."},"shortVideo":{"description":"Cette vid\xe9o semble assez courte, ne fournit pas assez de d\xe9tails.","title":"Vid\xe9o courte."},"spokenWordsQuestion":{"description":"Votre vid\xe9o offre-t-elle une explication d\xe9taill\xe9e et claire ?","title":"Avez-vous tout expliqu\xe9 ?"},"spokenWordsWarning":{"description":"La vid\xe9o ne comprend pratiquement aucun mot prononc\xe9.","title":"Aucun mot prononc\xe9."}},"audioLevelToast":{"continueSpeaking":"Continuez \xe0 parler pour expliquer.","noSound":"Aucun son d\xe9tect\xe9.","rememberSpeaking":"Veuillez parler \xe0 voix-haute."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Merci d\'utiliser SnapCall.","clipSubmissionTitle_one":"Votre clip a \xe9t\xe9 envoy\xe9","clipSubmissionTitle_other":"Vos clips ont \xe9t\xe9 envoy\xe9s","confirmRemovalDescription":"Voulez-vous vraiment supprimer cette photo/vid\xe9o ? Cette action ne peut pas \xeatre annul\xe9e.","confirmRemovalTitle":"Confirmer la suppression","elementBeingProcessed":"Veuillez patienter un moment pendant que votre {{ type }} est en cours de traitement...","elementCaptureSuccess":"{{ type }} captur\xe9(e) avec succ\xe8s","elementRecordedAndAttached":"Votre clip a \xe9t\xe9 envoy\xe9 et joint au fil de discussion.","goBackToTicket":"Revenir au billet","instructions":{"allowAccessOnPrompt":"<bold>Autorisez l\'acc\xe8s</bold> \xe0 la cam\xe9ra et au micro lorsque demand\xe9.","multiplePhotos":"Prenez <bold>une ou plusieurs photos</bold> pour donner plus de d\xe9tails.","privacyPolicy":"En continuant, vous acceptez notre <bold>Politique de confidentialit\xe9</bold>.","reviewAndSendAudios":"<bold>V\xe9rifiez vos audios</bold>, et ils seront envoy\xe9s automatiquement \xe0 nous.","reviewAndSendPhotos":"<bold>Validez vos photos</bold>, et elles nous seront envoy\xe9es automatiquement.","reviewAndSendVideos":"<bold>Validez vos vid\xe9os</bold>, et elles nous seront envoy\xe9es automatiquement.","screenShareInstruction":"S\xe9lectionnez l\'\xe9cran ou la fen\xeatre que vous souhaitez enregistrer.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Parlez clairement</bold> et dites ce que vous devez transmettre.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Appuyez sur le bouton d\'enregistrement</bold> pour commencer \xe0 enregistrer votre message audio.","tapStopVideoButton":"<bold>Appuyez sur Arr\xeat</bold> lorsque vous avez termin\xe9.","tapVideoButton":"<bold>Appuyez sur Enregistrer</bold>. Pensez \xe0 commenter.","videoSpeech":"Vous pouvez <bold>parler pendant</bold> l\'enregistrement pour ajouter des d\xe9tails."},"limit":"Enregistrement vid\xe9o limit\xe9 \xe0 5 min.","logIn":"Se connecter","loggedAs":"Connect\xe9 en tant que","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"D\'accord","openThread":"Ouvrir le fil de discussion","permissionDeniedDescription":"Sans acc\xe8s \xe0 la cam\xe9ra et au microphone, vous ne pouvez pas prendre de photos ou de vid\xe9os \xe0 partager avec l\'\xe9quipe d\'assistance. Veuillez accorder l\'acc\xe8s dans les param\xe8tres de votre navigateur.","permissionDeniedTitle":"Quelque chose s\'est mal pass\xe9 !","photoInstructionsTitle":"Pr\xeat \xe0 prendre une photo ?","replyAttached":"Votre r\xe9ponse a \xe9t\xe9 jointe","scanQRCode":"Scannez ce code QR avec un appareil compatible.","screenShareInstructionsTitle":"Pr\xeat \xe0 partager votre \xe9cran ?","screenTitle":"Pr\xeat \xe0 capturer votre \xe9cran ?","send":"Envoyer","sendElements_one":"Envoyer la {{ type }}","sendElements_other":"Envoyer {{ count }} \xe9l\xe9ments","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Enregistrer \xe9cran","stopScreenShareButton":"Stop enregistrement","submissionDescription":"Votre photo/vid\xe9o a \xe9t\xe9 envoy\xe9e avec succ\xe8s. Nous l\'examinerons et reviendrons vers vous bient\xf4t.","submissionTitle":"Merci pour votre soumission !","switchToMobileDescription":"Profitez d\'une exp\xe9rience encore plus pratique en utilisant votre t\xe9l\xe9phone pour prendre des photos et enregistrer des vid\xe9os.","switchToMobileTitle":"Passez sur votre mobile","takeNewElement":"Prendre une nouvelle {{ type }}","upload":"Upload","useDesktopVersion":"Continuer","videoInstructionsTitle":"Pr\xeat \xe0 enregistrer une vid\xe9o ?","waitVideo":"Cela peut prendre jusqu\'\xe0 15 secondes pour qu\'une vid\xe9o soit pr\xeate."},"recordingPopup":{"dismiss":"Fermer","recordingStartText":"Cet appel sera enregistr\xe9 sous peu. Si vous pr\xe9f\xe9rez ne pas \xeatre enregistr\xe9, vous \xeates libre de quitter l\'appel \xe0 tout moment.","recordingStartTitle":"L\'enregistrement va commencer."},"requestAccess":{"admit":"Accepter","defaultName":"Un utilisateur","deny":"Refuser","wantToJoin":"{{name}} souhaite rejoindre!"},"requestDevice":{"declined":"Votre requ\xeate a \xe9t\xe9 refus\xe9.","request":"{{user}} voudrait que vous partagiez votre {{device}}","requestInput":"Demander l\'activation","timedOut":"Votre requ\xeate n\'a pas eu de r\xe9ponse","userDeclined":"{{user}} a d\xe9clin\xe9 votre requ\xeate."},"settings":{"devices":"Appareils","help":"Aide","helpCenter":"Acc\xe9der au centre d\'aide","language":"Langage","preferences":"Pr\xe9f\xe9rences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Param\xe8tres"},"shareLink":{"failed":"Une erreur est survenue pendant l\'envoi du lien","invalid":"Lien invalide","invoice":"{{user}} vous a envoy\xe9 une facture.","pay":"Payer","poweredBy":"Propos\xe9 par","sentToUser":"Lien envoy\xe9 \xe0 {{user}}","sentToUsers":"Lien envoy\xe9 aux participants","title":"Partager un lien","title2":"Partager un lien"},"sharedHistory":{"shared":"Partag\xe9 avec vous"},"snapshot":{"error":"Une erreur est survenue pendant l\'envoi du snapshot","save":"Sauvegarder l\'image","sentToUser":"Snapshot envoy\xe9 \xe0 {{user}}","sentToUsers":"Snapshot envoy\xe9 aux participants.","shared":"Snapshot envoy\xe9.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Votre cam\xe9ra est bloqu\xe9.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"Haute d\xe9finition (720p)","lowDef":"Basse d\xe9finition (240p)","sendResolution":"R\xe9solution envoy\xe9e (max)","standardDef":"D\xe9finition standard (480p)","title":"Video"},"virtualBackground":{"setBackground":"Mettre l\'arri\xe8re plan","title":"Arri\xe8re plan virtuel"},"youtube":{"invalid":"URL YouTube invalide","share":"Regarder maintenant","title":"Regardons Ensemble","url":"URL YOUTUBE"}}');
365
+ $dcf57489ec338826$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Votre micro est bloqu\xe9.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"Vous n\'avez pas acc\xe8s \xe0 cette fonctionnalit\xe9. Souscrivez au plan Pro pour d\xe9bloquer toutes les fonctionnalit\xe9s de SnapCall.","descriptionGuest":"Vous participez \xe0 un appel cr\xe9\xe9 avec la version gratuite de SnapCall. Cette fonctionnalit\xe9 n\'est disponible qu\'avec une version Pro.","dismissConnected":"Souscrire \xe0 Pro","dismissGuest":"D\'accord","titleConnected":"Souscrire au plan Pro","titleGuest":"Fonctionnalit\xe9 non disponible"},"common":{"new":"new"},"copyLink":{"copied":"Lien copi\xe9 dans le presse-papier","copy":"Copier","description":"Copier le lien dans le presse-papiers","error":"Une erreur est survenue pendant la copie du lien dans le presse-papier","title":"Copier le lien"},"endView":{"callEnded":"Cet appel est termin\xe9","callIsOver":"Cet appel est termin\xe9 ou supprim\xe9","callLeft":"Vous avez quitt\xe9 l\'appel","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"Impossible de rejoindre l\'appel","fullDescription":"Limite d\'utilisateurs atteinte. Merci de rejoindre l\'appel ult\xe9rieurement.","goBack":"Retourner dans l\'appel","howWasYourExperience":"How was your experience?","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","tooLate":"Vous \xeates arriv\xe9 trop tard","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"gdpr":{"recordedWarning":"Pour am\xe9liorer la qualit\xe9 de notre service, cet appel va \xeatre enregistr\xe9."},"greeting":{"askToJoin":"Demander \xe0 rejoindre","askingLetIn":"Demande de participation...","cameraDisabled":"Cam\xe9ra d\xe9sactiv\xe9e","cameraEnabled":"Cam\xe9ra activ\xe9e","canceledCallRequest":"La demande d\'appel sera annul\xe9e et vous serez redirig\xe9 vers la page de planification des appels.","cantJoinCall":"Vous ne pouvez pas rejoindre cet appel","cantWait":"Vous ne souhaitez pas attendre ?","cantWaitLeaveMessage":"Vous ne pouvez pas attendre ? Vous pouvez laisser un message et vous serez contact\xe9 dans les plus brefs d\xe9lais.","clickOnLock":"Cliquez sur l\'ic\xf4ne de verrouillage <1></1> dans la barre de votre navigateur.","footerDescription":"D\xe9couvrez SnapCall, ajoutez de la vid\xe9o en temps r\xe9el \xe0 n\'importe quelle plateforme, produit ou service.","footerTitle":"Propuls\xe9 par SnapCall","leaveMessage":"Laisser un message","mainTitle":"Bienvenue sur SnapCall","mediaDenied":"Acc\xe8s au microphone et \xe0 la cam\xe9ra refus\xe9","microphoneDisabled":"Microphone d\xe9sactiv\xe9","microphoneEnabled":"Microphone activ\xe9","name":"Nom","nameDescription":"Ce nom sera affich\xe9 \xe0 tous les participants","namePlaceholder":"Ex. Lucie ou Pierre","nameSubmit":"Rejoindre la conversation","recordVideo":"Enregistrer une vid\xe9o","recordVoice":"Enregistrer un message vocal","requestACall":"Solliciter un appel maintenant","scheduleACall":"Planifier un appel","setting":"Param\xe8tres","sideDescription":"Veuillez entrer votre nom et configurer votre cam\xe9ra et microphone.","sideTitle":"C\'est bient\xf4t votre tour !","someoneDenied":"Quelqu\'un lors de l\'appel a refus\xe9 votre demande de participation.","takeFewMinute":"Cela peut prendre quelques minutes selon la disponibilit\xe9 des participants.","whatYouCanDo":"Voici ce que vous pouvez faire","youWillJoinWhenSomeoneLetsYou":"Votre acc\xe8s \xe0 l\'appel sera autoris\xe9 par un membre de l\'\xe9quipe {{ companyName }}."},"header":{"free":"Version gratuite"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Ajoutez un e-mail pour inviter.","addEmails":"Ajouter des e-mails...","copyCallLinkDescription":"Copiez ce lien et envoyez-le \xe0 toute personne que vous souhaitez inviter \xe0 rejoindre l\'appel.","copyClipLinkDescription":"Copiez ce lien et envoyez-le \xe0 toute personne que vous souhaitez inviter \xe0 enregistrer un clip.","email":"Email","emailPlaceholder":"Ex. jean@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"\xc9chec de l\'envoi, veuillez r\xe9essayer plus tard.","invalidEmail":"Format d\'email invalide.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Envoy\xe9 \xe0 {{ name }}","invitationSentTo_other":"Envoy\xe9 \xe0 {{ name }} et {{ otherEmailsCount }}+","invite":"Inviter","inviteByEmail":"Inviter par email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Inviter \xe0 rejoindre l\'appel","inviteCallDefaultMessage":"Vous \xeates invit\xe9 \xe0 rejoindre notre appel vid\xe9o. Cliquez sur le lien pour vous connecter instantan\xe9ment.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Veuillez enregistrer votre clip vid\xe9o maintenant et nous fournir plus de contexte pour mieux vous aider.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Inviter \xe0 enregistrer un clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Lien pour rejoindre l\'appel","linkToRecordAClip":"Lien pour enregistrer un clip","message":"Message","sharePublicLink":"Partager le lien public"},"leave":{"endCall":"Terminer l\'appel","leaveCall":"Quitter l\'appel","title":"Quitter"},"loader":{"connection":"Connexion..."},"menu":{"new":"NOUVEAU","openNewTab":"Ouvrir un nouvel onglet","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Partage d\'\xe9cran","startRecord":"Enregistrer l\'appel","stopRecord":"Arr\xeater l\'enregistrement","title":"Menu"},"misc":{"accept":"Accepter","audio":"Audio","camera":"Cam\xe9ra","cancel":"Annuler","confirm":"Confirmer","decline":"D\xe9cliner","from":"Depuis","microphone":"Micro","open":"Ouvrir","photo":"Photo","proceed":"Proc\xe9der","remove":"Enlever","screen":"\xc9cran","screenshot":"Capture d\'\xe9cran","someone":"Quelqu\'un","speaker":"Haut-parleur","user":"Utilisateur","video":"Vid\xe9o","you":"Vous"},"notifications":{"agentJoinError":"Une erreur est survenue en essayant de rejoindre la salle en tant qu\'agent","blockedMicrophonePopup":"SnapCall a besoin d\'acc\xe9der \xe0 votre cam\xe9ra et micro. Cliquez sur l\'ic\xf4ne de cam\xe9ra bloqu\xe9e dans la barre d\'adresse du navigateur.","blockedMicrophonePopupTitle":"Votre cam\xe9ra et micro sont bloqu\xe9s","cameraError":"Une erreur est survenue pendant l\'activation de la cam\xe9ra","cameraRotateError":"Une erreur est survenue pendant la rotation de la cam\xe9ra","close":"Fermer","connectedTo":"Connect\xe9 \xe0 {{name}}","criticalError":"Une erreur critique est survenue (erreur {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"Une erreur est survenue pendant l\'activation du micro","noCamera":"Aucune cam\xe9ra disponible","recording":"Enregistrement en cours","reload":"Recharger","screensharingError":"Une erreur est survenue pendant l\'activation du partage d\'\xe9cran","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scannez ce QR code avec votre t\xe9l\xe9phone pour ouvrir l\'appel.","scanTitle":"Scannez le QR Code","title":"Quick Connect"},"recorder":{"addMore":"Ajouter plus","addNewClip":"Ajouter un nouveau clip","allowAccess":"Autoriser l\'acc\xe8s","allowCamMicAccess":"Autoriser acc\xe8s cam\xe9ra/micro","allowScreenShareAccess":"Autoriser l\'acc\xe8s au partage d\'\xe9cran","attachElements_one":"Joindre {{ type }} au ticket","attachElements_other":"Joindre {{ count }} \xe9l\xe9ments","audioInstructionsTitle":"Pr\xeat \xe0 enregistrer un message vocal\xa0?","audioLevelNotification":{"noSound":{"description":"Assurez-vous que votre microphone est activ\xe9.","title":"Aucun son d\xe9tect\xe9."},"shortVideo":{"description":"Cette vid\xe9o semble assez courte, ne fournit pas assez de d\xe9tails.","title":"Vid\xe9o courte."},"spokenWordsQuestion":{"description":"Votre vid\xe9o offre-t-elle une explication d\xe9taill\xe9e et claire ?","title":"Avez-vous tout expliqu\xe9 ?"},"spokenWordsWarning":{"description":"La vid\xe9o ne comprend pratiquement aucun mot prononc\xe9.","title":"Aucun mot prononc\xe9."}},"audioLevelToast":{"continueSpeaking":"Continuez \xe0 parler pour expliquer.","noSound":"Aucun son d\xe9tect\xe9.","rememberSpeaking":"Veuillez parler \xe0 voix-haute."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Merci d\'utiliser SnapCall.","clipSubmissionTitle_one":"Votre clip a \xe9t\xe9 envoy\xe9","clipSubmissionTitle_other":"Vos clips ont \xe9t\xe9 envoy\xe9s","confirmRemovalDescription":"Voulez-vous vraiment supprimer cette photo/vid\xe9o ? Cette action ne peut pas \xeatre annul\xe9e.","confirmRemovalTitle":"Confirmer la suppression","elementBeingProcessed":"Veuillez patienter un moment pendant que votre {{ type }} est en cours de traitement...","elementCaptureSuccess":"{{ type }} captur\xe9(e) avec succ\xe8s","elementRecordedAndAttached":"Votre clip a \xe9t\xe9 envoy\xe9 et joint au fil de discussion.","goBackToTicket":"Revenir au billet","instructions":{"allowAccessOnPrompt":"<bold>Autorisez l\'acc\xe8s</bold> \xe0 la cam\xe9ra et au micro lorsque demand\xe9.","multiplePhotos":"Prenez <bold>une ou plusieurs photos</bold> pour donner plus de d\xe9tails.","privacyPolicy":"En continuant, vous acceptez notre <bold>Politique de confidentialit\xe9</bold>.","reviewAndSendAudios":"<bold>V\xe9rifiez vos audios</bold>, et ils seront envoy\xe9s automatiquement \xe0 nous.","reviewAndSendPhotos":"<bold>Validez vos photos</bold>, et elles nous seront envoy\xe9es automatiquement.","reviewAndSendVideos":"<bold>Validez vos vid\xe9os</bold>, et elles nous seront envoy\xe9es automatiquement.","screenShareInstruction":"S\xe9lectionnez l\'\xe9cran ou la fen\xeatre que vous souhaitez enregistrer.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Parlez clairement</bold> et dites ce que vous devez transmettre.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Appuyez sur le bouton d\'enregistrement</bold> pour commencer \xe0 enregistrer votre message audio.","tapStopVideoButton":"<bold>Appuyez sur Arr\xeat</bold> lorsque vous avez termin\xe9.","tapVideoButton":"<bold>Appuyez sur Enregistrer</bold>. Pensez \xe0 commenter.","videoSpeech":"Vous pouvez <bold>parler pendant</bold> l\'enregistrement pour ajouter des d\xe9tails."},"limit":"Enregistrement vid\xe9o limit\xe9 \xe0 5 min.","logIn":"Se connecter","loggedAs":"Connect\xe9 en tant que","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"D\'accord","openThread":"Ouvrir le fil de discussion","permissionDeniedDescription":"Sans acc\xe8s \xe0 la cam\xe9ra et au microphone, vous ne pouvez pas prendre de photos ou de vid\xe9os \xe0 partager avec l\'\xe9quipe d\'assistance. Veuillez accorder l\'acc\xe8s dans les param\xe8tres de votre navigateur.","permissionDeniedTitle":"Quelque chose s\'est mal pass\xe9 !","photoInstructionsTitle":"Pr\xeat \xe0 prendre une photo ?","replyAttached":"Votre r\xe9ponse a \xe9t\xe9 jointe","scanQRCode":"Scannez ce code QR avec un appareil compatible.","screenShareInstructionsTitle":"Pr\xeat \xe0 partager votre \xe9cran ?","screenTitle":"Pr\xeat \xe0 capturer votre \xe9cran ?","send":"Envoyer","sendElements_one":"Envoyer la {{ type }}","sendElements_other":"Envoyer {{ count }} \xe9l\xe9ments","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Enregistrer \xe9cran","stopScreenShareButton":"Stop enregistrement","submissionDescription":"Votre photo/vid\xe9o a \xe9t\xe9 envoy\xe9e avec succ\xe8s. Nous l\'examinerons et reviendrons vers vous bient\xf4t.","submissionTitle":"Merci pour votre soumission !","switchToMobileDescription":"Profitez d\'une exp\xe9rience encore plus pratique en utilisant votre t\xe9l\xe9phone pour prendre des photos et enregistrer des vid\xe9os.","switchToMobileTitle":"Passez sur votre mobile","takeNewElement":"Prendre une nouvelle {{ type }}","upload":"Upload","useDesktopVersion":"Continuer","videoInstructionsTitle":"Pr\xeat \xe0 enregistrer une vid\xe9o ?","waitVideo":"Cela peut prendre jusqu\'\xe0 15 secondes pour qu\'une vid\xe9o soit pr\xeate."},"recordingPopup":{"dismiss":"Fermer","recordingStartText":"Cet appel sera enregistr\xe9 sous peu. Si vous pr\xe9f\xe9rez ne pas \xeatre enregistr\xe9, vous \xeates libre de quitter l\'appel \xe0 tout moment.","recordingStartTitle":"L\'enregistrement va commencer."},"requestAccess":{"admit":"Accepter","defaultName":"Un utilisateur","deny":"Refuser","wantToJoin":"{{name}} souhaite rejoindre!"},"requestDevice":{"declined":"Votre requ\xeate a \xe9t\xe9 refus\xe9.","request":"{{user}} voudrait que vous partagiez votre {{device}}","requestInput":"Demander l\'activation","timedOut":"Votre requ\xeate n\'a pas eu de r\xe9ponse","userDeclined":"{{user}} a d\xe9clin\xe9 votre requ\xeate."},"settings":{"devices":"Appareils","help":"Aide","helpCenter":"Acc\xe9der au centre d\'aide","language":"Langage","preferences":"Pr\xe9f\xe9rences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Param\xe8tres"},"shareLink":{"failed":"Une erreur est survenue pendant l\'envoi du lien","invalid":"Lien invalide","invoice":"{{user}} vous a envoy\xe9 une facture.","pay":"Payer","poweredBy":"Propos\xe9 par","sentToUser":"Lien envoy\xe9 \xe0 {{user}}","sentToUsers":"Lien envoy\xe9 aux participants","title":"Partager un lien","title2":"Partager un lien"},"sharedHistory":{"shared":"Partag\xe9 avec vous"},"snapshot":{"error":"Une erreur est survenue pendant l\'envoi du snapshot","save":"Sauvegarder l\'image","sentToUser":"Snapshot envoy\xe9 \xe0 {{user}}","sentToUsers":"Snapshot envoy\xe9 aux participants.","shared":"Snapshot envoy\xe9.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Votre cam\xe9ra est bloqu\xe9.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"Haute d\xe9finition (720p)","lowDef":"Basse d\xe9finition (240p)","sendResolution":"R\xe9solution envoy\xe9e (max)","standardDef":"D\xe9finition standard (480p)","title":"Video"},"virtualBackground":{"setBackground":"Mettre l\'arri\xe8re plan","title":"Arri\xe8re plan virtuel"},"youtube":{"invalid":"URL YouTube invalide","share":"Regarder maintenant","title":"Regardons Ensemble","url":"URL YOUTUBE"}}');
365
366
 
366
367
 
367
368
  var $8af7f345a966aef3$exports = {};
368
- $8af7f345a966aef3$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Il tuo microfono \xe8 bloccato.","microphonePermissions":"Si prega di accettare la condivisione del microfono prima di accedere a queste opzioni.","title":"Audio"},"blockedFeature":{"descriptionConnected":"Su un piano gratuito, non puoi utilizzare questa funzione. Aggiorna il tuo piano per usufruire di tutte le funzionalit\xe0 in chiamata.","descriptionGuest":"Stai partecipando a una chiamata creata con una versione gratuita di SnapCall. Questa funzione \xe8 disponibile solo con una versione Pro.","dismissConnected":"L\'aggiornamento a Pro","dismissGuest":"Okay","titleConnected":"L\'aggiornamento a Pro","titleGuest":"Funzione non disponibile"},"common":{"new":"new"},"copyLink":{"copied":"Link copiato negli Appunti","copy":"Copia","description":"Copia il link negli appunti","error":"Si \xe8 verificato un errore durante la copia negli Appunti","title":"Copia il link"},"endView":{"callEnded":"Questa chiamata \xe8 finita","callIsOver":"Questa chiamata \xe8 finita o \xe8 stata eliminata","callLeft":"Hai lasciato la chiamata","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"Impossibile partecipare alla chiamata","fullDescription":"Limite d\'uso attenente.","goBack":"Torna alla chiamata","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","tooLate":"Sei arrivato troppo tardi"},"gdpr":{"recordedWarning":"Per migliorare la qualit\xe0 del nostro servizio, questa chiamata verr\xe0 registrata."},"greeting":{"askToJoin":"Chiedi di partecipare","askingLetIn":"Chiedo di essere fatto entrare...","cameraDisabled":"Fotocamera \xe8 spenta","cameraEnabled":"Fotocamera \xe8 accesa","canceledCallRequest":"La richiesta di chiamata verr\xe0 annullata e verrai reindirizzato alla pagina di pianificazione delle chiamate","cantJoinCall":"Non puoi partecipare a questa chiamata","cantWait":"Non vedo l\'ora?","cantWaitLeaveMessage":"Non vedi l\'ora? Puoi lasciare un messaggio e sarai contattato il prima possibile.","clickOnLock":"Fai clic sull\'icona del lucchetto <1></1> nella barra del browser.","footerDescription":"Incontrare SnapCall, il modo pi\xf9 semplice per aggiungere video in tempo reale a piattaforma, prodotto o servizio.","footerTitle":"Offerto da SnapCall","leaveMessage":"Lascia un messaggio","mainTitle":"Benvenuto a SnapCall","mediaDenied":"Accesso al microfono e alla fotocamera negato","microphoneDisabled":"Microfono \xe8 spento","microphoneEnabled":"Microfono \xe8 acceso","name":"Nome","nameDescription":"Questo nome verr\xe0 visualizzato a tutti i partecipanti alla chiamata.","namePlaceholder":"Per esempio. Lucia o Pietro","nameSubmit":"Partecipa alla conversazione","recordVideo":"Registra video","recordVoice":"Registra voce","requestACall":"Richiedi una chiamata","scheduleACall":"Pianifica una chiamata","setting":"Impostazioni","sideDescription":"Inserisci il tuo nome e regola la fotocamera e il microfono","sideTitle":"Tieni duro, il prossimo sei tu!","someoneDenied":"Qualcuno nella chiamata ha rifiutato la tua richiesta di partecipazione.","takeFewMinute":"L\'operazione potrebbe richiedere alcuni minuti a seconda della disponibilit\xe0 dei partecipanti.","whatYouCanDo":"Ecco cosa puoi fare","youWillJoinWhenSomeoneLetsYou":"Parteciperai alla chiamata quando qualcuno di {{ companyName }} ti far\xe0 entrare."},"header":{"free":"Versione gratuita"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Aggiungi un\'e-mail per invitare.","addEmails":"Aggiungi email...","copyCallLinkDescription":"Copia questo link e invialo a chiunque desideri invitare a partecipare alla chiamata.","copyClipLinkDescription":"Copia questo collegamento e invialo a chiunque desideri invitare a registrare una clip.","email":"Email","emailPlaceholder":"Es. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Impossibile inviare, riprova pi\xf9 tardi.","invalidEmail":"Formato email non valido.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Inviato a {{ name }}","invitationSentTo_other":"Inviato a {{ name }} e {{ otherEmailsCount }}+","invite":"Invita","inviteByEmail":"Invita via email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invita a partecipare alla chiamata","inviteCallDefaultMessage":"Sei invitato a partecipare alla nostra videochiamata. Fare clic sul collegamento per connettersi immediatamente.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Registra subito il tuo videoclip e forniscici pi\xf9 contesto per assisterti meglio.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invita a registrare la clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link per partecipare alla chiamata","linkToRecordAClip":"Collegamento per registrare una clip","message":"Messaggio","sharePublicLink":"Condividi link"},"leave":{"endCall":"Termina la chiamata per tutti","leaveCall":"Lascia la chiamata","title":"Lasciare"},"loader":{"connection":"Connessione..."},"menu":{"new":"NUOVO","openNewTab":"Apri una nuova scheda","pictureInPicture":"Immagine nell\'immagine","quickConnect":"Connessione Rapida","screenSharing":"Condivisione dello schermo","startRecord":"Registra chiamata","stopRecord":"Interrompere la registrazione","title":"Men\xf9"},"misc":{"accept":"Accettare","audio":"Audio","camera":"Telecamera","cancel":"Annulla","confirm":"Confermare","decline":"Declinare","from":"Da","microphone":"Microfono","open":"Aprire","photo":"Foto","proceed":"Procedere","remove":"Rimuovere","screen":"Schermo","screenshot":"Schermata","someone":"Qualcuno","speaker":"Altoparlante","user":"Utente","video":"Video","you":"Voi"},"notifications":{"agentJoinError":"Si \xe8 verificato un errore cercando di entrare nella conversazione come agente","blockedMicrophonePopup":"SnapCall ha bisogno di accedere alla fotocamera e al microfono. Fare clic sull\'icona della fotocamera bloccata nella barra degli indirizzi del browser.","blockedMicrophonePopupTitle":"La tua fotocamera e il tuo microfono sono bloccati","cameraError":"Si \xe8 verificato un errore durante l\'attivazione della fotocamera","cameraRotateError":"Si \xe8 verificato un errore durante la rotazione della fotocamera","close":"Chiudere","connectedTo":"Connesso a {{name}}","criticalError":"Si \xe8 verificato un errore critico (errore {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"Si \xe8 verificato un errore durante l\'attivazione del microfono","noCamera":"Nessuna fotocamera disponibile","recording":"Registrazione in corso","reload":"Ricaricare","screensharingError":"Si \xe8 verificato un errore durante l\'attivazione della condivisione dello schermo","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scansiona questo codice QR con il telefono per aprire la chiamata.","scanTitle":"Scansiona il codice QR","title":"Connessione Rapida"},"recorder":{"addMore":"Aggiungere altro","addNewClip":"Aggiungi una nuova clip","allowAccess":"Consenti accesso","allowCamMicAccess":"Consenti l\'accesso a cam/mic","allowScreenShareAccess":"Consenti accesso alla condivisione dello schermo","attachElements_one":"Allega {{ type }} al biglietto","attachElements_other":"Allega {{ count }} elementi","audioInstructionsTitle":"Pronti per registrare un messaggio vocale?","audioLevelNotification":{"noSound":{"description":"Assicurati che il microfono sia attivato.","title":"Nessun suono rilevato."},"shortVideo":{"description":"Questo video \xe8 troppo breve per avere un contesto.","title":"Breve video."},"spokenWordsQuestion":{"description":"Il tuo video include abbastanza dettagli parlati?","title":"Parole pronunciate."},"spokenWordsWarning":{"description":"La clip include a malapena parole pronunciate.","title":"Nessuna parola detta."}},"audioLevelToast":{"continueSpeaking":"Continua a parlare per un contesto pi\xf9 chiaro.","noSound":"Nessun suono rilevato.","rememberSpeaking":"Ricordati di parlare per fornire il contesto."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Grazie per aver utilizzato SnapCall.","clipSubmissionTitle_one":"La tua clip \xe8 stata inviata","clipSubmissionTitle_other":"I tuoi clip sono stati inviati","confirmRemovalDescription":"Sei sicuro di voler rimuovere questa foto/video? Questa azione non pu\xf2 essere annullata.","confirmRemovalTitle":"Conferma rimozione","elementBeingProcessed":"Attendi un momento mentre il tuo {{ type }} viene elaborato...","elementCaptureSuccess":"{{ type }} catturato con successo","elementRecordedAndAttached":"La tua clip \xe8 stata inviata e allegata al thread.","goBackToTicket":"Torna al biglietto","instructions":{"allowAccessOnPrompt":"<bold>Consenti l\'accesso</bold> alla fotocamera e al microfono.","multiplePhotos":"Scatta <bold>una foto o pi\xf9</bold> di una per i dettagli.","privacyPolicy":"Procedendo, accetti la nostra <bold>Politica sulla Privacy.</bold>","reviewAndSendAudios":"<bold>Rivedi i tuoi audio</bold> e verranno inviati automaticamente a noi.","reviewAndSendPhotos":"<bold>Convalida le tue foto</bold> e verranno inviate automaticamente a noi.","reviewAndSendVideos":"<bold>Convalida i tuoi video</bold> e verranno inviati automaticamente a noi.","screenShareInstruction":"Seleziona lo schermo o la finestra che desideri registrare.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Parla chiaramente</bold> e d\xec ci\xf2 che devi comunicare.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Premi il pulsante di registrazione</bold> per iniziare a registrare il tuo messaggio vocale.","tapStopVideoButton":"<bold>Premi Stop</bold> quando hai finito.","tapVideoButton":"<bold>Premi Registra</bold>. Ricordati di commentare.","videoSpeech":"Puoi <bold>parlare durante</bold> la registrazione per aggiungere dettagli."},"limit":"Registrazione video limitata a 5 min.","logIn":"Login","loggedAs":"Registrato come","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Apri il thread","permissionDeniedDescription":"Senza l\'accesso alla fotocamera e al microfono, non \xe8 possibile scattare foto o registrare video da condividere con il team di supporto. Si prega di concedere l\'accesso nelle impostazioni del browser.","permissionDeniedTitle":"Qualcosa \xe8 andato storto!","photoInstructionsTitle":"Pronto a scattare una foto?","replyAttached":"La tua risposta \xe8 stata allegata","scanQRCode":"Scansiona questo codice QR con un dispositivo compatibile.","screenShareInstructionsTitle":"Pronto a condividere il tuo schermo?","screenTitle":"Pronto a catturare il tuo schermo?","send":"Invia","sendElements_one":"Invia {{ type }}","sendElements_other":"Invia {{ count }} elementi","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Registra il mio schermo","stopScreenShareButton":"Ferma registrazione","submissionDescription":"La tua foto/video \xe8 stata inviata con successo. La esamineremo e ti risponderemo al pi\xf9 presto.","submissionTitle":"Grazie per il tuo invio!","switchToMobileDescription":"Goditi un\'esperienza ancora pi\xf9 pratica utilizzando il tuo telefono per scattare foto e registrare video.","switchToMobileTitle":"Passa al tuo dispositivo mobile","takeNewElement":"Cattura un nuovo {{ type }}","upload":"Upload","useDesktopVersion":"Usa la versione desktop","videoInstructionsTitle":"Pronto a registrare un video?","waitVideo":"Potrebbero essere necessari fino a 15 secondi affinch\xe9 un video sia pronto."},"recordingPopup":{"dismiss":"Chiudi","recordingStartText":"Questa chiamata verr\xe0 registrata a breve. Se preferisci non essere registrato, sei libero di lasciare la chiamata in questo momento.","recordingStartTitle":"Registrazione in procinto di iniziare."},"requestAccess":{"admit":"Ammettere","defaultName":"Un utente","deny":"Negare","wantToJoin":"<bold>{{name}}</bold> vuole unirsi!"},"requestDevice":{"declined":"La tua richiesta \xe8 stata rifiutata.","request":"{{user}} vorrebbe condividere il tuo {{device}}","requestInput":"Richiesta di attivazione","timedOut":"La tua richiesta non ha ricevuto risposta","userDeclined":"{{user}} ha rifiutato la tua richiesta"},"settings":{"devices":"Dispositivi","help":"Aiuto","helpCenter":"Accedi all\'Assistenza","language":"Linguaggio","preferences":"Preferenze","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Impostazioni"},"shareLink":{"failed":"Si \xe8 verificato un errore durante l\'invio del link","invalid":"Collegamento non valido","invoice":"{{user}} ti ha inviato una fattura.","pay":"Paga","poweredBy":"Proposto da","sentToUser":"Link inviato a {{user}}","sentToUsers":"Link inviato ai partecipanti","title":"Condividi un link","title2":"Condividi un link"},"sharedHistory":{"shared":"Condiviso con te"},"snapshot":{"error":"Si \xe8 verificato un errore durante l\'invio della schermata","save":"Salva l\'immagine","sentToUser":"Schermata inviata a {{user}}","sentToUsers":"Schermanta inviata ai partecipanti","shared":"Schermata inviata","title":"Schermata"},"videoMenu":{"blockedCamera":"La fotocamera \xe8 bloccata.","cameraPermissions":"Si prega di accettare la condivisione della fotocamera prima di accedere a queste opzioni.","highDef":"Alta definizione (720p)","lowDef":"Definizione bassa (240p)","sendResolution":"Risoluzione inviata (max)","standardDef":"Definizione standard (480p)","title":"Video"},"virtualBackground":{"setBackground":"Imposta sfondo","title":"Sfondo virtuale"},"youtube":{"invalid":"URL YouTube non valido","share":"Guarda ora","title":"Vedere Assieme","url":"URL YOUTUBE"}}');
369
+ $8af7f345a966aef3$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Il tuo microfono \xe8 bloccato.","microphonePermissions":"Si prega di accettare la condivisione del microfono prima di accedere a queste opzioni.","title":"Audio"},"blockedFeature":{"descriptionConnected":"Su un piano gratuito, non puoi utilizzare questa funzione. Aggiorna il tuo piano per usufruire di tutte le funzionalit\xe0 in chiamata.","descriptionGuest":"Stai partecipando a una chiamata creata con una versione gratuita di SnapCall. Questa funzione \xe8 disponibile solo con una versione Pro.","dismissConnected":"L\'aggiornamento a Pro","dismissGuest":"Okay","titleConnected":"L\'aggiornamento a Pro","titleGuest":"Funzione non disponibile"},"common":{"new":"new"},"copyLink":{"copied":"Link copiato negli Appunti","copy":"Copia","description":"Copia il link negli appunti","error":"Si \xe8 verificato un errore durante la copia negli Appunti","title":"Copia il link"},"endView":{"callEnded":"Questa chiamata \xe8 finita","callIsOver":"Questa chiamata \xe8 finita o \xe8 stata eliminata","callLeft":"Hai lasciato la chiamata","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"Impossibile partecipare alla chiamata","fullDescription":"Limite d\'uso attenente.","goBack":"Torna alla chiamata","howWasYourExperience":"How was your experience?","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","tooLate":"Sei arrivato troppo tardi","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"gdpr":{"recordedWarning":"Per migliorare la qualit\xe0 del nostro servizio, questa chiamata verr\xe0 registrata."},"greeting":{"askToJoin":"Chiedi di partecipare","askingLetIn":"Chiedo di essere fatto entrare...","cameraDisabled":"Fotocamera \xe8 spenta","cameraEnabled":"Fotocamera \xe8 accesa","canceledCallRequest":"La richiesta di chiamata verr\xe0 annullata e verrai reindirizzato alla pagina di pianificazione delle chiamate","cantJoinCall":"Non puoi partecipare a questa chiamata","cantWait":"Non vedo l\'ora?","cantWaitLeaveMessage":"Non vedi l\'ora? Puoi lasciare un messaggio e sarai contattato il prima possibile.","clickOnLock":"Fai clic sull\'icona del lucchetto <1></1> nella barra del browser.","footerDescription":"Incontrare SnapCall, il modo pi\xf9 semplice per aggiungere video in tempo reale a piattaforma, prodotto o servizio.","footerTitle":"Offerto da SnapCall","leaveMessage":"Lascia un messaggio","mainTitle":"Benvenuto a SnapCall","mediaDenied":"Accesso al microfono e alla fotocamera negato","microphoneDisabled":"Microfono \xe8 spento","microphoneEnabled":"Microfono \xe8 acceso","name":"Nome","nameDescription":"Questo nome verr\xe0 visualizzato a tutti i partecipanti alla chiamata.","namePlaceholder":"Per esempio. Lucia o Pietro","nameSubmit":"Partecipa alla conversazione","recordVideo":"Registra video","recordVoice":"Registra voce","requestACall":"Richiedi una chiamata","scheduleACall":"Pianifica una chiamata","setting":"Impostazioni","sideDescription":"Inserisci il tuo nome e regola la fotocamera e il microfono","sideTitle":"Tieni duro, il prossimo sei tu!","someoneDenied":"Qualcuno nella chiamata ha rifiutato la tua richiesta di partecipazione.","takeFewMinute":"L\'operazione potrebbe richiedere alcuni minuti a seconda della disponibilit\xe0 dei partecipanti.","whatYouCanDo":"Ecco cosa puoi fare","youWillJoinWhenSomeoneLetsYou":"Parteciperai alla chiamata quando qualcuno di {{ companyName }} ti far\xe0 entrare."},"header":{"free":"Versione gratuita"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Aggiungi un\'e-mail per invitare.","addEmails":"Aggiungi email...","copyCallLinkDescription":"Copia questo link e invialo a chiunque desideri invitare a partecipare alla chiamata.","copyClipLinkDescription":"Copia questo collegamento e invialo a chiunque desideri invitare a registrare una clip.","email":"Email","emailPlaceholder":"Es. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Impossibile inviare, riprova pi\xf9 tardi.","invalidEmail":"Formato email non valido.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Inviato a {{ name }}","invitationSentTo_other":"Inviato a {{ name }} e {{ otherEmailsCount }}+","invite":"Invita","inviteByEmail":"Invita via email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invita a partecipare alla chiamata","inviteCallDefaultMessage":"Sei invitato a partecipare alla nostra videochiamata. Fare clic sul collegamento per connettersi immediatamente.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Registra subito il tuo videoclip e forniscici pi\xf9 contesto per assisterti meglio.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invita a registrare la clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link per partecipare alla chiamata","linkToRecordAClip":"Collegamento per registrare una clip","message":"Messaggio","sharePublicLink":"Condividi link"},"leave":{"endCall":"Termina la chiamata per tutti","leaveCall":"Lascia la chiamata","title":"Lasciare"},"loader":{"connection":"Connessione..."},"menu":{"new":"NUOVO","openNewTab":"Apri una nuova scheda","pictureInPicture":"Immagine nell\'immagine","quickConnect":"Connessione Rapida","screenSharing":"Condivisione dello schermo","startRecord":"Registra chiamata","stopRecord":"Interrompere la registrazione","title":"Men\xf9"},"misc":{"accept":"Accettare","audio":"Audio","camera":"Telecamera","cancel":"Annulla","confirm":"Confermare","decline":"Declinare","from":"Da","microphone":"Microfono","open":"Aprire","photo":"Foto","proceed":"Procedere","remove":"Rimuovere","screen":"Schermo","screenshot":"Schermata","someone":"Qualcuno","speaker":"Altoparlante","user":"Utente","video":"Video","you":"Voi"},"notifications":{"agentJoinError":"Si \xe8 verificato un errore cercando di entrare nella conversazione come agente","blockedMicrophonePopup":"SnapCall ha bisogno di accedere alla fotocamera e al microfono. Fare clic sull\'icona della fotocamera bloccata nella barra degli indirizzi del browser.","blockedMicrophonePopupTitle":"La tua fotocamera e il tuo microfono sono bloccati","cameraError":"Si \xe8 verificato un errore durante l\'attivazione della fotocamera","cameraRotateError":"Si \xe8 verificato un errore durante la rotazione della fotocamera","close":"Chiudere","connectedTo":"Connesso a {{name}}","criticalError":"Si \xe8 verificato un errore critico (errore {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"Si \xe8 verificato un errore durante l\'attivazione del microfono","noCamera":"Nessuna fotocamera disponibile","recording":"Registrazione in corso","reload":"Ricaricare","screensharingError":"Si \xe8 verificato un errore durante l\'attivazione della condivisione dello schermo","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scansiona questo codice QR con il telefono per aprire la chiamata.","scanTitle":"Scansiona il codice QR","title":"Connessione Rapida"},"recorder":{"addMore":"Aggiungere altro","addNewClip":"Aggiungi una nuova clip","allowAccess":"Consenti accesso","allowCamMicAccess":"Consenti l\'accesso a cam/mic","allowScreenShareAccess":"Consenti accesso alla condivisione dello schermo","attachElements_one":"Allega {{ type }} al biglietto","attachElements_other":"Allega {{ count }} elementi","audioInstructionsTitle":"Pronti per registrare un messaggio vocale?","audioLevelNotification":{"noSound":{"description":"Assicurati che il microfono sia attivato.","title":"Nessun suono rilevato."},"shortVideo":{"description":"Questo video \xe8 troppo breve per avere un contesto.","title":"Breve video."},"spokenWordsQuestion":{"description":"Il tuo video include abbastanza dettagli parlati?","title":"Parole pronunciate."},"spokenWordsWarning":{"description":"La clip include a malapena parole pronunciate.","title":"Nessuna parola detta."}},"audioLevelToast":{"continueSpeaking":"Continua a parlare per un contesto pi\xf9 chiaro.","noSound":"Nessun suono rilevato.","rememberSpeaking":"Ricordati di parlare per fornire il contesto."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Grazie per aver utilizzato SnapCall.","clipSubmissionTitle_one":"La tua clip \xe8 stata inviata","clipSubmissionTitle_other":"I tuoi clip sono stati inviati","confirmRemovalDescription":"Sei sicuro di voler rimuovere questa foto/video? Questa azione non pu\xf2 essere annullata.","confirmRemovalTitle":"Conferma rimozione","elementBeingProcessed":"Attendi un momento mentre il tuo {{ type }} viene elaborato...","elementCaptureSuccess":"{{ type }} catturato con successo","elementRecordedAndAttached":"La tua clip \xe8 stata inviata e allegata al thread.","goBackToTicket":"Torna al biglietto","instructions":{"allowAccessOnPrompt":"<bold>Consenti l\'accesso</bold> alla fotocamera e al microfono.","multiplePhotos":"Scatta <bold>una foto o pi\xf9</bold> di una per i dettagli.","privacyPolicy":"Procedendo, accetti la nostra <bold>Politica sulla Privacy.</bold>","reviewAndSendAudios":"<bold>Rivedi i tuoi audio</bold> e verranno inviati automaticamente a noi.","reviewAndSendPhotos":"<bold>Convalida le tue foto</bold> e verranno inviate automaticamente a noi.","reviewAndSendVideos":"<bold>Convalida i tuoi video</bold> e verranno inviati automaticamente a noi.","screenShareInstruction":"Seleziona lo schermo o la finestra che desideri registrare.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Parla chiaramente</bold> e d\xec ci\xf2 che devi comunicare.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Premi il pulsante di registrazione</bold> per iniziare a registrare il tuo messaggio vocale.","tapStopVideoButton":"<bold>Premi Stop</bold> quando hai finito.","tapVideoButton":"<bold>Premi Registra</bold>. Ricordati di commentare.","videoSpeech":"Puoi <bold>parlare durante</bold> la registrazione per aggiungere dettagli."},"limit":"Registrazione video limitata a 5 min.","logIn":"Login","loggedAs":"Registrato come","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Apri il thread","permissionDeniedDescription":"Senza l\'accesso alla fotocamera e al microfono, non \xe8 possibile scattare foto o registrare video da condividere con il team di supporto. Si prega di concedere l\'accesso nelle impostazioni del browser.","permissionDeniedTitle":"Qualcosa \xe8 andato storto!","photoInstructionsTitle":"Pronto a scattare una foto?","replyAttached":"La tua risposta \xe8 stata allegata","scanQRCode":"Scansiona questo codice QR con un dispositivo compatibile.","screenShareInstructionsTitle":"Pronto a condividere il tuo schermo?","screenTitle":"Pronto a catturare il tuo schermo?","send":"Invia","sendElements_one":"Invia {{ type }}","sendElements_other":"Invia {{ count }} elementi","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Registra il mio schermo","stopScreenShareButton":"Ferma registrazione","submissionDescription":"La tua foto/video \xe8 stata inviata con successo. La esamineremo e ti risponderemo al pi\xf9 presto.","submissionTitle":"Grazie per il tuo invio!","switchToMobileDescription":"Goditi un\'esperienza ancora pi\xf9 pratica utilizzando il tuo telefono per scattare foto e registrare video.","switchToMobileTitle":"Passa al tuo dispositivo mobile","takeNewElement":"Cattura un nuovo {{ type }}","upload":"Upload","useDesktopVersion":"Usa la versione desktop","videoInstructionsTitle":"Pronto a registrare un video?","waitVideo":"Potrebbero essere necessari fino a 15 secondi affinch\xe9 un video sia pronto."},"recordingPopup":{"dismiss":"Chiudi","recordingStartText":"Questa chiamata verr\xe0 registrata a breve. Se preferisci non essere registrato, sei libero di lasciare la chiamata in questo momento.","recordingStartTitle":"Registrazione in procinto di iniziare."},"requestAccess":{"admit":"Ammettere","defaultName":"Un utente","deny":"Negare","wantToJoin":"<bold>{{name}}</bold> vuole unirsi!"},"requestDevice":{"declined":"La tua richiesta \xe8 stata rifiutata.","request":"{{user}} vorrebbe condividere il tuo {{device}}","requestInput":"Richiesta di attivazione","timedOut":"La tua richiesta non ha ricevuto risposta","userDeclined":"{{user}} ha rifiutato la tua richiesta"},"settings":{"devices":"Dispositivi","help":"Aiuto","helpCenter":"Accedi all\'Assistenza","language":"Linguaggio","preferences":"Preferenze","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Impostazioni"},"shareLink":{"failed":"Si \xe8 verificato un errore durante l\'invio del link","invalid":"Collegamento non valido","invoice":"{{user}} ti ha inviato una fattura.","pay":"Paga","poweredBy":"Proposto da","sentToUser":"Link inviato a {{user}}","sentToUsers":"Link inviato ai partecipanti","title":"Condividi un link","title2":"Condividi un link"},"sharedHistory":{"shared":"Condiviso con te"},"snapshot":{"error":"Si \xe8 verificato un errore durante l\'invio della schermata","save":"Salva l\'immagine","sentToUser":"Schermata inviata a {{user}}","sentToUsers":"Schermanta inviata ai partecipanti","shared":"Schermata inviata","title":"Schermata"},"videoMenu":{"blockedCamera":"La fotocamera \xe8 bloccata.","cameraPermissions":"Si prega di accettare la condivisione della fotocamera prima di accedere a queste opzioni.","highDef":"Alta definizione (720p)","lowDef":"Definizione bassa (240p)","sendResolution":"Risoluzione inviata (max)","standardDef":"Definizione standard (480p)","title":"Video"},"virtualBackground":{"setBackground":"Imposta sfondo","title":"Sfondo virtuale"},"youtube":{"invalid":"URL YouTube non valido","share":"Guarda ora","title":"Vedere Assieme","url":"URL YOUTUBE"}}');
369
370
 
370
371
 
371
372
  var $888696145bca5c4a$exports = {};
372
- $888696145bca5c4a$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"El micr\xf3fono est\xe1 bloqueado.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call has ended","callIsOver":"The call is over or deleted","callLeft":"You have left the call","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","tooLate":"You arrived too late"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Open thread","permissionDeniedDescription":"Without access to the camera and microphone, you won\'t be able to capture photos or videos to share with the support team. Please grant access in your browser settings.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
373
+ $888696145bca5c4a$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"El micr\xf3fono est\xe1 bloqueado.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call has ended","callIsOver":"The call is over or deleted","callLeft":"You have left the call","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","howWasYourExperience":"How was your experience?","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","tooLate":"You arrived too late","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Open thread","permissionDeniedDescription":"Without access to the camera and microphone, you won\'t be able to capture photos or videos to share with the support team. Please grant access in your browser settings.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
373
374
 
374
375
 
375
376
  var $3167241121ea3627$exports = {};
376
- $3167241121ea3627$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Mikrofon jest zablokowany.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call has ended","callIsOver":"The call is over or deleted","callLeft":"You have left the call","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","tooLate":"You arrived too late"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Open thread","permissionDeniedDescription":"Without access to the camera and microphone, you won\'t be able to capture photos or videos to share with the support team. Please grant access in your browser settings.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
377
+ $3167241121ea3627$exports = JSON.parse('{"audioMenu":{"blockedMicrophone":"Mikrofon jest zablokowany.","microphonePermissions":"Please accept microphone sharing before accessing these options.","title":"Audio"},"blockedFeature":{"descriptionConnected":"On a free plan, you can\'t use this feature. Upgrade your plan to enjoy all in-call features.","descriptionGuest":"You are participating in a call created with a free version of SnapCall. This feature is only available with a Pro version.","dismissConnected":"Upgrade to Pro","dismissGuest":"Okay","titleConnected":"Upgrade to Pro","titleGuest":"Feature not available"},"common":{"new":"new"},"copyLink":{"copied":"Link copied to clipboard","copy":"Copy","description":"Copy link into clipboard","error":"An error occured when trying to copy to clipboard","title":"Copy link"},"endView":{"callEnded":"The call has ended","callIsOver":"The call is over or deleted","callLeft":"You have left the call","callNoLongerActive":"This call is no longer active. Thank you for participating.","full":"You can\'t join this call","fullDescription":"The room is full. Please try to join the call later.","goBack":"Go back to call","howWasYourExperience":"How was your experience?","ifMistakeRejoin":"If this was a mistake, you can rejoin using the button below.","invalidLink":"Invalid link","invalidOrExpired":"This link is invalid or expired.","openDashboard":"Open dashboard","pleaseRateYourExperienceBelow":"Please rate your experience below","thankYouForYourFeedback":"Thank you for your feedback.","tooLate":"You arrived too late","yourFeedbackHelpsUs":"Your feedback helps us improve. See you soon!"},"gdpr":{"recordedWarning":"To improve the quality of our service, this call will be recorded."},"greeting":{"askToJoin":"Ask to join","askingLetIn":"Asking to be let in...","cameraDisabled":"Camera is Off","cameraEnabled":"Camera is On","canceledCallRequest":"The call request will be canceled and you will be redirected to the call scheduling page.","cantJoinCall":"You can\u2019t join this call","cantWait":"Can\'t wait?","cantWaitLeaveMessage":"Can\u2019t wait? You can leave a message and you will be contacted as soon as possible.","clickOnLock":"Click on the <1></1> lock icon in your browser\'s bar.","footerDescription":"Meet SnapCall, the easiest way to add real-time video to platform, product or service.","footerTitle":"Powered by SnapCall","leaveMessage":"Leave a message","mainTitle":"Welcome to SnapCall","mediaDenied":"Microphone and camera access denied","microphoneDisabled":"Microphone is Off","microphoneEnabled":"Microphone is On","name":"Name","nameDescription":"This name will be displayed to all participants in the call.","namePlaceholder":"Eg. Lucy or Peter","nameSubmit":"Join Conversation","recordVideo":"Record video","recordVoice":"Record voice","requestACall":"Request a call","scheduleACall":"Schedule a call","setting":"Settings","sideDescription":"Please enter your name and adjust your camera and microphone","sideTitle":"Hold tight, you\'re next!","someoneDenied":"Someone in the call denied your request to join.","takeFewMinute":"This may take a few minutes depending on the availability of the participants.","whatYouCanDo":"Here\u2019s what you can do","youWillJoinWhenSomeoneLetsYou":"You will join the call when someone from {{ companyName }} lets you in."},"header":{"free":"Free version"},"invitePeople":{"PublicLink":"Public link","addEmailToInvite":"Add an email to invite.","addEmails":"Add emails...","copyCallLinkDescription":"Copy this link and send it to anyone you wish to invite to join the call.","copyClipLinkDescription":"Copy this link and send it to anyone you wish to invite to record a clip.","email":"Email","emailPlaceholder":"Eg. john@acme.com","emailsOrNumberPlaceholder":"Eg. john@acme.com or +33612345678","error":"Failed to send, please try again later.","invalidEmail":"Invalid email format.","invalidEmailOrNumber":"Invalid email or number format.","invitationSentTo_one":"Sent to {{ name }}","invitationSentTo_other":"Sent to {{ name }} and {{ otherEmailsCount }}+","invite":"Invite","inviteByEmail":"Invite by email","inviteByEmailOrNumber":"Invite by email or sms","inviteCall":"Invite to join call","inviteCallDefaultMessage":"Hey! You\'re invited to join our video call. Click the link to connect instantly.","inviteClipAudioDefaultMessage":"Hey! Please record an audio message now and provide us with more context to assist you better.","inviteClipDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","inviteClipPhotoDefaultMessage":"Hey! Please take a photo and provide us with more context to assist you better.","inviteClipScreenDefaultMessage":"Hey! Please record your screen now and provide us with more context to assist you better.","inviteClipVideoDefaultMessage":"Hey! Please record your video now and provide us with more context to assist you better.","invitePeople":"Invite people","inviteRecordAudio":"Record an audio","inviteRecordClip":"Invite to record clip","inviteRecordPhoto":"Take a photo","inviteRecordScreen":"Record a screen","inviteRecordVideo":"Record a video","joinTheCall":"Join the call","linkToJoinCall":"Link to join the call","linkToRecordAClip":"Link to record a clip","message":"Message","sharePublicLink":"Share public link"},"leave":{"endCall":"End call for all","leaveCall":"Leave call","title":"Leave"},"loader":{"connection":"Connecting..."},"menu":{"new":"NEW","openNewTab":"Open new tab","pictureInPicture":"Picture-in-Picture","quickConnect":"Quick Connect","screenSharing":"Screen sharing","startRecord":"Record call","stopRecord":"Stop record","title":"Menu"},"misc":{"accept":"Accept","audio":"Audio","camera":"Camera","cancel":"Cancel","confirm":"Confirm","decline":"Decline","from":"From","microphone":"Microphone","open":"Open","photo":"Photo","proceed":"Proceed","remove":"Remove","screen":"Screen","screenshot":"Screenshot","someone":"Someone","speaker":"Speaker","user":"User","video":"Video","you":"You"},"notifications":{"agentJoinError":"An error occured while trying to join the room as an agent","blockedMicrophonePopup":"SnapCall requires access to your camera and microphone. Click the camera blocked icon in your browser\'s address bar.","blockedMicrophonePopupTitle":"Camera and microphone are blocked","cameraError":"An error occured when trying to toggle the camera","cameraRotateError":"An error occured when trying to rotate the camera","close":"Close","connectedTo":"Connected to {{name}}","criticalError":"A critical error has occurred (error {{code}}).","error":"Error","errorOccuredCode":"An error occured (error {{code}}).","invitationSentToFailed":"Sent to {{ name }} failed.","microphoneError":"An error occured when trying to toggle the microphone","noCamera":"No camera available","recording":"Recording in progress","reload":"Reload","screensharingError":"An error occured when trying to toggle screensharing","uploadError":"An error occured during the upload, please try again later."},"quickConnect":{"scan":"Scan this QR code with your phone camera to open the call.","scanTitle":"Scan QR Code","title":"Quick Connect"},"recorder":{"addMore":"Add more","addNewClip":"Add new clip","allowAccess":"Allow access","allowCamMicAccess":"Allow access to cam/mic","allowScreenShareAccess":"Allow access to screen sharing","attachElements_one":"Attach {{ type }} to ticket","attachElements_other":"Attach {{ count }} elements","audioInstructionsTitle":"Ready to record a voice message?","audioLevelNotification":{"noSound":{"description":"Make sure your microphone is activated.","title":"No sound detected."},"shortVideo":{"description":"This video is too short to get context.","title":"Short video."},"spokenWordsQuestion":{"description":"Does your video include enough spoken details?","title":"Spoken words."},"spokenWordsWarning":{"description":"The clip includes barely any spoken words.","title":"No spoken words."}},"audioLevelToast":{"continueSpeaking":"Continue speaking for clearer context.","noSound":"No sound detected.","rememberSpeaking":"Remember to speak to provide context."},"chooseWhatYouWantToShare":"Choose what you want to share","chooseWhatYouWantToShareDescription":"Select the screen or tab you want to share and start recording.","clipCount_one":"{{ count }} clip","clipCount_other":"{{ count }} clips","clipSubmissionDescription":"Thank you for using SnapCall.","clipSubmissionTitle_one":"Your clip has been sent","clipSubmissionTitle_other":"Your clips have been sent","confirmRemovalDescription":"Are you sure you want to delete this photo/video? This action cannot be undone.","confirmRemovalTitle":"Confirm deletion","elementBeingProcessed":"Please wait while your {{ type }} is being processed...","elementCaptureSuccess":"{{ type }} captured successfully","elementRecordedAndAttached":"Your clip has been sent and attached to the thread.","goBackToTicket":"Go back to ticket","instructions":{"allowAccessOnPrompt":"When prompted, <bold>allow access</bold> to camera and microphone.","multiplePhotos":"Take a <bold>photo or multiple</bold> for detail, then review.","privacyPolicy":"By proceeding, you agree to our <bold>Privacy Policy</bold>.","reviewAndSendAudios":"<bold>Review your audios</bold>, and they will be sent to us automatically.","reviewAndSendPhotos":"<bold>Validate your photos</bold>, and they will be sent to us automatically.","reviewAndSendVideos":"<bold>Review your videos</bold>, and they will be sent to us automatically.","screenShareInstruction":"Select the screen or window you wish to record.","selectScreenshare":"Tap Record my screen and select the screen or window you want to record.","speakClearly":"<bold>Speak clearly</bold> and say what you need to convey.","speakDuringRecord":"You can speak while recording to add details.","stopScreenOnFinish":"Press the Stop button when finished. The video will be sent to us automatically.","tapAudioButton":"<bold>Tap the record button</bold> to start recording your audio message.","tapStopVideoButton":"<bold>Tap stop</bold> when you are done.","tapVideoButton":"<bold>Tap the record button</bold> to begin and feel free to provide commentary.","videoSpeech":"You can <bold>talk during</bold> the recording to provide additional information."},"limit":"Video recording limited to 5 min.","logIn":"Log in","loggedAs":"Logged as","mediaCount_one":"{{ count }} media","mediaCount_other":"{{ count }} media","mediaSent_one":"Your media has been sent","mediaSent_other":"Your media has been sent","noCameraAccess":"No camera access","noCameraAccessDescription":"No camera access Allow camera access in your browser.","noCameraAndMicrophoneAccess":"No camera & microphone access","noCameraAndMicrophoneAccessDescription":"No camera & microphone access Allow microphone and camera access in your browser.","noMicrophoneAccess":"No microphone access","noMicrophoneAccessDescription":"No microphone access Allow microphone access in your browser.","okay":"Okay","openThread":"Open thread","permissionDeniedDescription":"Without access to the camera and microphone, you won\'t be able to capture photos or videos to share with the support team. Please grant access in your browser settings.","permissionDeniedTitle":"Something went wrong!","photoInstructionsTitle":"Ready to snap a photo?","replyAttached":"Your reply has been attached","scanQRCode":"Scan this QR code with a compatible device.","screenShareInstructionsTitle":"Ready to share your screen?","screenTitle":"Ready to capture your screen?","send":"Send","sendElements_one":"Send {{ type }}","sendElements_other":"Send {{ count }} elements","showQrCode":"Show QR code","startScreenRecording":"Start screen recording","startScreenShareButton":"Record my screen","stopScreenShareButton":"Stop recording","submissionDescription":"Your photo/video has been successfully submitted. We will review it and get back to you shortly.","submissionTitle":"Thank you for your submission!","switchToMobileDescription":"Experience greater convenience by using your phone to take photos and record videos.","switchToMobileTitle":"Switch to your mobile device","takeNewElement":"Capture a new {{ type }}","upload":"Upload","useDesktopVersion":"Use the desktop version","videoInstructionsTitle":"Ready to record a video?","waitVideo":"A video may take up to 15 seconds to be ready."},"recordingPopup":{"dismiss":"Dismiss","recordingStartText":"This call will be recorded shortly. If you\u2019d rather not be recorded, you\u2019re welcome to leave the call at this time.","recordingStartTitle":"Recording about to start."},"requestAccess":{"admit":"Admit","defaultName":"An user","deny":"Deny","wantToJoin":"<bold>{{name}}</bold> wants to join!"},"requestDevice":{"declined":"Your request has been declined.","request":"{{user}} would like you to share your {{device}}","requestInput":"Request input devices","timedOut":"Your request has timed out.","userDeclined":"{{user}} has declined your request."},"settings":{"devices":"Devices","help":"Help","helpCenter":"Go to help center","language":"Language","preferences":"Preferences","selectYourCamera":"Select your preferred camera","selectYourLanguage":"Select your preferred language","selectYourMicrophone":"Select your preferred microphone","title":"Settings"},"shareLink":{"failed":"Failed to send link","invalid":"Invalid link","invoice":"{{user}} sent you an invoice.","pay":"Pay","poweredBy":"Powered by","sentToUser":"Link sent to {{user}}","sentToUsers":"Link sent to users","title":"Share link","title2":"Share a link"},"sharedHistory":{"shared":"Shared with you"},"snapshot":{"error":"An error occured when trying to send the snapshot","save":"Save photo","sentToUser":"Snapshot sent to {{user}}","sentToUsers":"Snapshot sent to users.","shared":"Snapshot shared.","title":"Snapshot"},"videoMenu":{"blockedCamera":"Camera is blocked.","cameraPermissions":"Please accept camera sharing before accessing these options.","highDef":"High definition (720p)","lowDef":"Low definition (240p)","sendResolution":"Send Resolution (maximum)","standardDef":"Standard definition (480p)","title":"Video"},"virtualBackground":{"setBackground":"Set Background","title":"Virtual Background"},"youtube":{"invalid":"Invalid YouTube URL","share":"Watch now","title":"Watch Together","url":"YOUTUBE URL"}}');
377
378
 
378
379
 
379
380
  const $384d985bb9605c35$export$150b732325d14d04 = {
@@ -1070,18 +1071,45 @@ class $107ba89b5d0109ab$export$22ddc20344c01547 {
1070
1071
 
1071
1072
 
1072
1073
 
1074
+ const $8c9dca4cd56e4637$export$8a48322ecc4782be = async (url, streamToken, file)=>{
1075
+ const searchParams = new URLSearchParams({
1076
+ filename: file
1077
+ });
1078
+ const result = await fetch(`${url}/public/streams/${streamToken}/temporary-assets?${searchParams}`, {
1079
+ method: "get",
1080
+ headers: {
1081
+ "Content-Type": "application/json"
1082
+ }
1083
+ }).then((response)=>response.json());
1084
+ return result;
1085
+ };
1086
+ const $8c9dca4cd56e4637$export$df987b50509121ea = async (url, streamToken, file)=>{
1087
+ const searchParams = new URLSearchParams({
1088
+ filename: file
1089
+ });
1090
+ const result = await fetch(`${url}/public/streams/${streamToken}/temporary-assets?${searchParams}`, {
1091
+ method: "delete",
1092
+ headers: {
1093
+ "Content-Type": "application/json"
1094
+ }
1095
+ }).then((response)=>response.json());
1096
+ return result;
1097
+ };
1098
+
1099
+
1073
1100
 
1074
1101
  var $2114f1d49575b676$require$Buffer = $3Sbms$Buffer;
1075
- const $2114f1d49575b676$export$bfc52a1c1f84ba66 = async (apiUrl, { token: token, base64Image: base64Image, session_id: session_id, user_id: user_id, peer_id: peer_id, stepToken: stepToken })=>{
1076
- const filename = `${(0, $3Sbms$v4)()}.jpeg`;
1102
+ const $2114f1d49575b676$export$bfc52a1c1f84ba66 = async (apiUrl, { token: token, base64Image: base64Image })=>{
1103
+ const file = `${(0, $3Sbms$v4)()}.jpeg`;
1077
1104
  const uploadBody = $2114f1d49575b676$require$Buffer.from(String(base64Image).replace(/^data:image\/\w+;base64,/, ""), "base64");
1078
- const { url: url, headers: headers } = await fetch(`${apiUrl}/streams/${token}/snapshot`, {
1105
+ const { url: url, headers: headers, filename: filename } = await fetch(`${apiUrl}/public/streams/${token}/events/upload`, {
1079
1106
  method: "POST",
1080
1107
  headers: {
1081
1108
  "Content-Type": "application/json"
1082
1109
  },
1083
1110
  body: JSON.stringify({
1084
- filename: filename,
1111
+ type: "image",
1112
+ filename: file,
1085
1113
  contentLength: uploadBody.length
1086
1114
  })
1087
1115
  }).then((res)=>res.json());
@@ -1094,22 +1122,10 @@ const $2114f1d49575b676$export$bfc52a1c1f84ba66 = async (apiUrl, { token: token,
1094
1122
  },
1095
1123
  body: uploadBody
1096
1124
  });
1097
- const event = await fetch(`${apiUrl}/public/streams/${token}/snapshot-event`, {
1098
- method: "POST",
1099
- headers: {
1100
- "Content-Type": "application/json"
1101
- },
1102
- body: JSON.stringify({
1103
- stepToken: stepToken,
1104
- filename: filename,
1105
- peer_id: peer_id,
1106
- session_id: session_id,
1107
- user_id: user_id
1108
- })
1109
- }).then((res)=>res.json());
1125
+ const { url: assetUrl } = await (0, $8c9dca4cd56e4637$export$8a48322ecc4782be)(apiUrl, token, filename);
1110
1126
  return {
1111
- url: event.url,
1112
- assetId: event.id
1127
+ filename: filename,
1128
+ url: assetUrl
1113
1129
  };
1114
1130
  };
1115
1131
 
@@ -1135,7 +1151,9 @@ const $120418cdeb6706cf$export$de363e709c412c8a = (fn, wait = 300)=>{
1135
1151
  };
1136
1152
 
1137
1153
 
1138
- const $8042747316a8a88d$export$deda6dde1c58aa97 = async (apiUrl, { file: file, token: token, stepToken: stepToken, sessionId: sessionId, userId: userId, peerId: peerId })=>{
1154
+
1155
+
1156
+ const $07e4bc01ab825269$export$6ad2c48011488f7 = async (apiUrl, { file: file, token: token })=>{
1139
1157
  if (!file) throw new Error(`Missing file on "${file}"`);
1140
1158
  const upload = await fetch(`${apiUrl}/public/streams/${token}/events/upload`, {
1141
1159
  method: "POST",
@@ -1157,23 +1175,27 @@ const $8042747316a8a88d$export$deda6dde1c58aa97 = async (apiUrl, { file: file, t
1157
1175
  },
1158
1176
  body: file
1159
1177
  });
1178
+ const { url: assetUrl } = await (0, $8c9dca4cd56e4637$export$8a48322ecc4782be)(apiUrl, token, filename);
1160
1179
  if (!uploadResponse.ok) throw new Error("Upload failed");
1161
- const type = file.type.split("/")[0];
1162
- const eventRequest = await fetch(`${apiUrl}/public/streams/${token}/events`, {
1180
+ return {
1181
+ filename: filename,
1182
+ url: assetUrl
1183
+ };
1184
+ };
1185
+
1186
+
1187
+ const $7a4afee3d30fe755$export$c30017717ce2168e = async (apiUrl, token, asset)=>{
1188
+ const event = await fetch(`${apiUrl}/public/streams/${token}/events/batch`, {
1163
1189
  method: "POST",
1164
1190
  headers: {
1165
1191
  "Content-Type": "application/json"
1166
1192
  },
1167
1193
  body: JSON.stringify({
1168
- filename: filename,
1169
- type: type,
1170
- stepToken: stepToken,
1171
- session_id: sessionId,
1172
- user_id: userId,
1173
- peer_id: peerId
1194
+ medias: asset
1174
1195
  })
1175
1196
  });
1176
- return eventRequest.json();
1197
+ if (event.ok) return event.json();
1198
+ throw new Error(` request failed ${event.status} `);
1177
1199
  };
1178
1200
 
1179
1201
 
@@ -1181,6 +1203,7 @@ const $c31e3fb4360572af$var$log = new (0, $0f65a9eaf4a1e910$export$2e2bcd8739ae0
1181
1203
  const $c31e3fb4360572af$export$103bedf43ba882db = {
1182
1204
  WEBRTC_FAILED: "WRTC1",
1183
1205
  WEBRTC_RECOVER_ERROR: "WRTC2",
1206
+ WEBRTC_BAD_STATE_ERROR: "WRTC3",
1184
1207
  CREATE_TRANSPORT_FAILED: "TRANS1",
1185
1208
  CONSUME_ERROR: "CONS1",
1186
1209
  SOCKET_LOST: "SOCK1",
@@ -1338,6 +1361,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
1338
1361
  plan: this.plan,
1339
1362
  permissions: this.permissions,
1340
1363
  peerId: this.peerId,
1364
+ clientId: this.clientId,
1341
1365
  profile: this.profile,
1342
1366
  joinOptions: this.joinOptions,
1343
1367
  deviceState: this.getDevicesState(),
@@ -1419,6 +1443,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
1419
1443
  throw new Error("Invalid room ID");
1420
1444
  });
1421
1445
  initResult.videoUpload = video_upload;
1446
+ initResult.hideStreamInvite = company.hide_stream_invite;
1422
1447
  if (flow_v0) initResult.flowV0 = flow_v0;
1423
1448
  if (flow && flow.steps.length > 0) {
1424
1449
  options.recorder = true;
@@ -1429,12 +1454,12 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
1429
1454
  this.company = company;
1430
1455
  this.permissions = permissions;
1431
1456
  this.defaultPublicPage = defaultPublicPage;
1432
- if (recordings?.headless === true || recordings?.video === true) permissions.push("record_video_on_demand");
1433
1457
  this.plan = name;
1434
1458
  const searchParams = new URLSearchParams({
1435
1459
  peerId: this.peerId,
1436
1460
  clientId: this.clientId,
1437
- roomId: room
1461
+ roomId: room,
1462
+ events: "0"
1438
1463
  });
1439
1464
  if (options.authKey) searchParams.append("authKey", options.authKey);
1440
1465
  const recorderPath = this.joinOptions.recorder ? "/recorder" : "";
@@ -2318,13 +2343,17 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2318
2343
  max: capabilities?.zoom?.max || 0
2319
2344
  };
2320
2345
  if (capabilities.focusMode) // https://github.com/w3c/mediacapture-image/blob/main/implementation-status.md
2321
- track.applyConstraints({
2322
- advanced: [
2323
- {
2324
- focusMode: "continuous"
2325
- }
2326
- ]
2327
- });
2346
+ try {
2347
+ await track.applyConstraints({
2348
+ advanced: [
2349
+ {
2350
+ focusMode: "continuous"
2351
+ }
2352
+ ]
2353
+ });
2354
+ } catch (error) {
2355
+ console.error("Failed to set focus mode", error);
2356
+ }
2328
2357
  const encodings = undefined;
2329
2358
  const codecOptions = {
2330
2359
  videoGoogleStartBitrate: 1000
@@ -2512,26 +2541,28 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2512
2541
  async saveCapture(base64Image) {
2513
2542
  return (0, $2114f1d49575b676$export$bfc52a1c1f84ba66)(this.config.apiUrl, {
2514
2543
  token: this.roomId,
2515
- base64Image: base64Image,
2516
- peer_id: this.peerId,
2517
- user_id: this.agentIdentity?.id,
2518
- stepToken: this.stepToken
2544
+ base64Image: base64Image
2519
2545
  });
2520
2546
  }
2521
- async uploadEvent(file) {
2522
- return (0, $8042747316a8a88d$export$deda6dde1c58aa97)(this.config.apiUrl, {
2547
+ async uploadAsset(file) {
2548
+ return (0, $07e4bc01ab825269$export$6ad2c48011488f7)(this.config.apiUrl, {
2523
2549
  token: this.roomId,
2524
- file: file,
2525
- peerId: this.peerId,
2526
- userId: this.agentIdentity?.id,
2527
- stepToken: this.stepToken
2550
+ file: file
2528
2551
  });
2529
2552
  }
2530
- async deleteCapture(assetId) {
2531
- const res = await this.protoo?.request("deleteCapture", {
2532
- assetId: assetId
2553
+ createEvents(assets) {
2554
+ const baseEvent = {
2555
+ peer_id: this.peerId,
2556
+ user_id: this.agentIdentity?.id,
2557
+ stepToken: this.stepToken
2558
+ };
2559
+ const events = assets.map((asset)=>{
2560
+ return {
2561
+ ...asset,
2562
+ ...baseEvent
2563
+ };
2533
2564
  });
2534
- return res;
2565
+ return (0, $7a4afee3d30fe755$export$c30017717ce2168e)(this.config.apiUrl, this.roomId, events);
2535
2566
  }
2536
2567
  async captureVideo(videoElement) {
2537
2568
  if (this.permissions.find((permission)=>permission === "instant_picture")) {
@@ -2572,6 +2603,8 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2572
2603
  });
2573
2604
  }
2574
2605
  async consumeProducer({ peerId: peerId, producerId: producerId, deviceType: deviceType, paused: paused }) {
2606
+ const peer = this.peers.get(peerId);
2607
+ let consumer;
2575
2608
  try {
2576
2609
  const mediaKind = deviceType === "microphone" ? "audio" : "video";
2577
2610
  const transport = await this.getTransport(mediaKind, "recv");
@@ -2581,7 +2614,6 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2581
2614
  transportId: transport.id,
2582
2615
  rtpCapabilities: this.streamerMediasoup.getRtpCapabilities()
2583
2616
  });
2584
- const peer = this.peers.get(peerId);
2585
2617
  if (peer) peer.producersData.push({
2586
2618
  producerId: producerId,
2587
2619
  deviceType: deviceType,
@@ -2589,7 +2621,7 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2589
2621
  });
2590
2622
  const { producerId: resolvedProducerId, id: id, kind: kind, rtpParameters: rtpParameters, appData: appData } = data;
2591
2623
  $c31e3fb4360572af$var$log.log("consumeProducer", "Data: ", data);
2592
- const consumer = await transport.consume({
2624
+ consumer = await transport.consume({
2593
2625
  id: id,
2594
2626
  producerId: resolvedProducerId,
2595
2627
  kind: kind,
@@ -2605,7 +2637,16 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2605
2637
  mediaSoupConsumer: consumer,
2606
2638
  deviceType: deviceType
2607
2639
  });
2640
+ } catch (error) {
2641
+ this.onCriticalError($c31e3fb4360572af$export$103bedf43ba882db.CONSUME_ERROR);
2642
+ $c31e3fb4360572af$var$log.error("consumeProducer", "newConsumer request failed", error);
2643
+ }
2644
+ try {
2608
2645
  this.scaleVideoEncodingsParameter();
2646
+ } catch (error) {
2647
+ console.error("scale error", error);
2648
+ }
2649
+ if (consumer) {
2609
2650
  const event = new $c31e3fb4360572af$var$SnapcallEvent("mediaStart", {
2610
2651
  detail: {
2611
2652
  peerId: peerId,
@@ -2615,19 +2656,22 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2615
2656
  }
2616
2657
  });
2617
2658
  this.dispatchEvent(event);
2618
- if (consumer.kind === "audio") {
2619
- const audioRenderer = this.createAudioRenderer(consumer.id);
2620
- const mediaStream = new MediaStream();
2621
- mediaStream.addTrack(consumer.track);
2622
- audioRenderer.setSource(mediaStream);
2623
- audioRenderer.play();
2624
- }
2625
- if (consumer.kind === "video") await this.protoo?.request("resumeConsumer", {
2659
+ }
2660
+ if (consumer?.kind === "audio") try {
2661
+ const audioRenderer = this.createAudioRenderer(consumer.id);
2662
+ const mediaStream = new MediaStream();
2663
+ mediaStream.addTrack(consumer.track);
2664
+ audioRenderer.setSource(mediaStream);
2665
+ audioRenderer.play();
2666
+ } catch (error) {
2667
+ console.error("audio renderer error", error);
2668
+ }
2669
+ if (consumer?.kind === "video") try {
2670
+ await this.protoo?.request("resumeConsumer", {
2626
2671
  consumerId: consumer.id
2627
2672
  });
2628
2673
  } catch (error) {
2629
- this.onCriticalError($c31e3fb4360572af$export$103bedf43ba882db.CONSUME_ERROR);
2630
- $c31e3fb4360572af$var$log.error("consumeProducer", "newConsumer request failed", error);
2674
+ console.error("resume consumer error", error);
2631
2675
  }
2632
2676
  }
2633
2677
  async setDisplayName(displayName) {
@@ -2824,7 +2868,25 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2824
2868
  return this.permissions;
2825
2869
  }
2826
2870
  async startRecord() {
2827
- await this.protoo?.request("startRecord");
2871
+ if (this.micProducer?.rtpSender?.transport?.iceTransport.state !== "connected") try {
2872
+ this.onCriticalError($c31e3fb4360572af$export$103bedf43ba882db.WEBRTC_BAD_STATE_ERROR);
2873
+ const stats = await this.micProducer?.getStats();
2874
+ const dump = {};
2875
+ stats?.forEach((value, key)=>{
2876
+ dump[key] = value;
2877
+ });
2878
+ $3Sbms$captureMessage("Start record in bad state", {
2879
+ contexts: {
2880
+ data: {
2881
+ producerState: this.micProducer?.rtpSender?.transport?.iceTransport?.state,
2882
+ dump: JSON.stringify(dump)
2883
+ }
2884
+ }
2885
+ });
2886
+ } catch (err) {
2887
+ $3Sbms$captureException(err);
2888
+ }
2889
+ await this.protoo?.request("startRecord", this.micProducer?.rtpSender?.transport?.iceTransport.state);
2828
2890
  }
2829
2891
  async stopRecord() {
2830
2892
  await this.protoo?.request("stopRecord");
@@ -2841,6 +2903,12 @@ class $c31e3fb4360572af$export$2e2bcd8739ae039 extends $c31e3fb4360572af$var$Str
2841
2903
  if (!this.protoo) throw new Error("not connected");
2842
2904
  return this.protoo?.request("waitingRequests");
2843
2905
  }
2906
+ readAsset(file) {
2907
+ return (0, $8c9dca4cd56e4637$export$8a48322ecc4782be)(this.config.apiUrl, this.roomId, file);
2908
+ }
2909
+ deleteAsset(file) {
2910
+ return (0, $8c9dca4cd56e4637$export$df987b50509121ea)(this.config.apiUrl, this.roomId, file);
2911
+ }
2844
2912
  }
2845
2913
 
2846
2914
 
@@ -5087,7 +5155,7 @@ const $f235befa4cdc42d6$var$multiPiP = new (0, $e96d119a19ed0c6c$export$45fabd1c
5087
5155
  const $f235befa4cdc42d6$var$browser = $3Sbms$parse(window.navigator.userAgent);
5088
5156
  const $f235befa4cdc42d6$var$Header = ()=>{
5089
5157
  const { t: t } = (0, $3Sbms$useTranslation)();
5090
- const { setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible, setIsSettingsMenuVisible: setIsSettingsMenuVisible, setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible, options: options, muted: muted, streaming: streaming, permissions: permissions, plan: plan, setBlockedFeaturePopupOpen: setBlockedFeaturePopupOpen, isAgent: isAgent, videoRecording: videoRecording, setVideoRecording: setVideoRecording } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
5158
+ const { setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible, setIsSettingsMenuVisible: setIsSettingsMenuVisible, setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible, options: options, muted: muted, streaming: streaming, permissions: permissions, plan: plan, setBlockedFeaturePopupOpen: setBlockedFeaturePopupOpen, isAgent: isAgent, videoRecording: videoRecording, setVideoRecording: setVideoRecording, clientInitResult: clientInitResult } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
5091
5159
  const { streams: streams } = (0, $cce9fd41d8a55a18$export$b5633a7cfbe42d9f)();
5092
5160
  const [extraOptions, setExtraOptions] = (0, $3Sbms$useState)(options.extraSettingsOptions || []);
5093
5161
  const inviteModal = (0, $3Sbms$useOverlayTriggerState)({});
@@ -5172,15 +5240,6 @@ const $f235befa4cdc42d6$var$Header = ()=>{
5172
5240
  title: t("quickConnect.title"),
5173
5241
  jsxIcon: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $2da9626742e3560b$export$6470d09a29d34d08), {}),
5174
5242
  action: onScanQuickConnectClick
5175
- },
5176
- {
5177
- id: "invite",
5178
- title: t("invitePeople.invite"),
5179
- jsxIcon: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$UserPlus1Icon), {
5180
- size: 24,
5181
- className: "text-white"
5182
- }),
5183
- action: ()=>inviteModal.setOpen(true)
5184
5243
  }
5185
5244
  ]
5186
5245
  },
@@ -5196,6 +5255,15 @@ const $f235befa4cdc42d6$var$Header = ()=>{
5196
5255
  ]
5197
5256
  }
5198
5257
  ];
5258
+ if (!clientInitResult.hideStreamInvite) computedCategories[1].items.push({
5259
+ id: "invite",
5260
+ title: t("invitePeople.invite"),
5261
+ jsxIcon: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$UserPlus1Icon), {
5262
+ size: 24,
5263
+ className: "text-white"
5264
+ }),
5265
+ action: ()=>inviteModal.setOpen(true)
5266
+ });
5199
5267
  if ($f235befa4cdc42d6$var$browser.platform.type === "desktop" && $f235befa4cdc42d6$var$browser.engine.name === "Blink") computedCategories[2].items.unshift({
5200
5268
  id: "virtualBackground",
5201
5269
  title: t("virtualBackground.title"),
@@ -5246,6 +5314,7 @@ const $f235befa4cdc42d6$var$Header = ()=>{
5246
5314
  muted,
5247
5315
  streaming,
5248
5316
  inviteModal,
5317
+ clientInitResult.hideStreamInvite,
5249
5318
  setIsQuickConnectPopupVisible,
5250
5319
  setBlockedFeaturePopupOpen,
5251
5320
  setIsSettingsMenuVisible,
@@ -8463,9 +8532,9 @@ const $8d3d0e80c56cde5c$export$6a789d1ce3bcb863 = (0, $3Sbms$styledcomponents).b
8463
8532
  justify-content: center;
8464
8533
  color: ${({ theme: theme })=>theme.popupTitleColor};
8465
8534
  `;
8466
- const $8d3d0e80c56cde5c$export$c58a46cd2027881e = (0, $3Sbms$styledcomponents).image`
8535
+ const $8d3d0e80c56cde5c$export$c58a46cd2027881e = (0, $3Sbms$styledcomponents).div`
8467
8536
  position: absolute;
8468
- with: 70px;
8537
+ width: 70px;
8469
8538
  height: 70px;
8470
8539
  `;
8471
8540
 
@@ -10328,9 +10397,49 @@ var $01986a58bfba8001$export$2e2bcd8739ae039 = $01986a58bfba8001$var$Settings;
10328
10397
 
10329
10398
 
10330
10399
 
10400
+
10401
+ const $a6fff711012a3991$export$2ee28caa7f1e962e = (props)=>/*#__PURE__*/ (0, $3Sbms$jsx)("svg", {
10402
+ xmlns: "http://www.w3.org/2000/svg",
10403
+ width: "26",
10404
+ height: "25",
10405
+ viewBox: "0 0 26 25",
10406
+ fill: "none",
10407
+ ...props,
10408
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)("path", {
10409
+ d: "M11.7319 1.90273C12.1311 0.674316 13.8689 0.67432 14.2681 1.90273L16.2929 8.13442C16.4714 8.68378 16.9833 9.05573 17.5609 9.05573H24.1133C25.405 9.05573 25.942 10.7085 24.897 11.4678L19.5961 15.3191C19.1287 15.6587 18.9332 16.2605 19.1117 16.8099L21.1365 23.0415C21.5356 24.2699 20.1297 25.2915 19.0847 24.5322L13.7837 20.6809C13.3164 20.3413 12.6836 20.3413 12.2163 20.6809L6.9153 24.5323C5.87035 25.2915 4.46438 24.27 4.86351 23.0415L6.88831 16.8099C7.06681 16.2605 6.87126 15.6587 6.40395 15.3191L1.10296 11.4677C0.0580053 10.7085 0.595043 9.05573 1.88667 9.05573H8.43905C9.01669 9.05573 9.52863 8.68378 9.70713 8.13442L11.7319 1.90273Z",
10410
+ fill: "currentColor"
10411
+ })
10412
+ });
10413
+
10414
+
10415
+
10416
+ const $df41bfe6da05853a$var$feedbackRatings = [
10417
+ 1,
10418
+ 2,
10419
+ 3,
10420
+ 4,
10421
+ 5
10422
+ ].reverse();
10331
10423
  const $df41bfe6da05853a$var$EndView = ({ state: state })=>{
10332
10424
  const { t: t } = (0, $3Sbms$useTranslation)();
10333
10425
  const { setStreamState: setStreamState, options: options } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
10426
+ const sendSessionFeedback = (0, $3Sbms$useMutation)({
10427
+ mutationFn: ({ rate: rate })=>{
10428
+ const { roomId: roomId, peerId: peerId } = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getState();
10429
+ return fetch(`${options.apiUrl}/public/streams/${roomId}/feedback`, {
10430
+ method: "PUT",
10431
+ headers: {
10432
+ "Content-Type": "application/json"
10433
+ },
10434
+ body: JSON.stringify({
10435
+ peer_id: peerId,
10436
+ rate: rate
10437
+ })
10438
+ });
10439
+ }
10440
+ });
10441
+ const showFeedback = (state === "ended" || state === "terminated") && !options.apiKey;
10442
+ const feedbackSent = sendSessionFeedback.isPending || sendSessionFeedback.isSuccess || sendSessionFeedback.isError;
10334
10443
  const statesData = {
10335
10444
  ended: {
10336
10445
  title: t("endView.callLeft"),
@@ -10378,65 +10487,95 @@ const $df41bfe6da05853a$var$EndView = ({ state: state })=>{
10378
10487
  /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10379
10488
  children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $a1ac29d50bdaa837$export$194e6397ae7c260), {})
10380
10489
  }),
10381
- /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10382
- className: "flex flex-1 justify-center items-center",
10383
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10384
- className: "flex flex-col items-center gap-6 w-full p-4 md:w-[500px] md:p-6 bg-gray-50 border-2 border-gray-100 rounded-lg",
10385
- children: [
10386
- /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10387
- className: "text-4xl",
10388
- children: stateData.icon
10389
- }),
10390
- /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10391
- className: "flex flex-col items-center gap-1",
10392
- children: [
10393
- /*#__PURE__*/ (0, $3Sbms$jsx)("h2", {
10394
- className: "text-2xl font-medium text-gray-1000",
10395
- children: stateData.title
10396
- }),
10397
- /*#__PURE__*/ (0, $3Sbms$jsx)("p", {
10398
- className: "text-sm text-gray-700",
10399
- children: stateData.description
10400
- })
10401
- ]
10402
- }),
10403
- /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10404
- className: "flex gap-2",
10405
- children: [
10406
- state === "ended" && /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
10407
- variant: "outline",
10408
- size: "sm",
10409
- className: "bg-gray-25 select-none",
10410
- onClick: onGoBackClick,
10411
- children: [
10412
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$FlipBackwardIcon), {
10413
- size: 16,
10414
- className: "text-gray-1000"
10415
- }),
10416
- t("endView.goBack")
10417
- ]
10418
- }),
10419
- options.apiKey && /*#__PURE__*/ (0, $3Sbms$jsx)("a", {
10420
- href: "https://app.snapcall.io",
10421
- target: "_blank",
10422
- rel: "noreferrer",
10423
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
10490
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10491
+ className: "flex flex-col flex-1 justify-center items-center gap-6 w-full md:w-[500px] mx-auto",
10492
+ children: [
10493
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10494
+ className: "flex flex-col items-center gap-6 w-full p-4 md:p-6 bg-gray-50 border-2 border-gray-100 rounded-lg",
10495
+ children: [
10496
+ /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10497
+ className: "text-4xl",
10498
+ children: stateData.icon
10499
+ }),
10500
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10501
+ className: "flex flex-col items-center gap-1",
10502
+ children: [
10503
+ /*#__PURE__*/ (0, $3Sbms$jsx)("h2", {
10504
+ className: "text-2xl font-medium text-gray-1000",
10505
+ children: stateData.title
10506
+ }),
10507
+ /*#__PURE__*/ (0, $3Sbms$jsx)("p", {
10508
+ className: "text-sm text-gray-700",
10509
+ children: stateData.description
10510
+ })
10511
+ ]
10512
+ }),
10513
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10514
+ className: "flex gap-2",
10515
+ children: [
10516
+ state === "ended" && /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
10424
10517
  variant: "outline",
10425
10518
  size: "sm",
10426
10519
  className: "bg-gray-25 select-none",
10520
+ onClick: onGoBackClick,
10427
10521
  children: [
10428
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$ArrowUpRightIcon), {
10522
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$FlipBackwardIcon), {
10429
10523
  size: 16,
10430
10524
  className: "text-gray-1000"
10431
10525
  }),
10432
- t("endView.openDashboard")
10526
+ t("endView.goBack")
10433
10527
  ]
10528
+ }),
10529
+ options.apiKey && /*#__PURE__*/ (0, $3Sbms$jsx)("a", {
10530
+ href: "https://app.snapcall.io",
10531
+ target: "_blank",
10532
+ rel: "noreferrer",
10533
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
10534
+ variant: "outline",
10535
+ size: "sm",
10536
+ className: "bg-gray-25 select-none",
10537
+ children: [
10538
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$ArrowUpRightIcon), {
10539
+ size: 16,
10540
+ className: "text-gray-1000"
10541
+ }),
10542
+ t("endView.openDashboard")
10543
+ ]
10544
+ })
10434
10545
  })
10435
- })
10436
- ]
10437
- })
10438
- ]
10439
- })
10546
+ ]
10547
+ })
10548
+ ]
10549
+ }),
10550
+ showFeedback && /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10551
+ className: "flex flex-col gap-6 items-center text-center w-full p-4 md:p-6 bg-gray-50 border-2 border-gray-100 rounded-lg",
10552
+ children: [
10553
+ /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10554
+ className: "flex flex-col gap-1",
10555
+ children: [
10556
+ /*#__PURE__*/ (0, $3Sbms$jsx)("h4", {
10557
+ className: "text-md text-gray-1000 font-medium",
10558
+ children: feedbackSent ? t("endView.thankYouForYourFeedback") : t("endView.howWasYourExperience")
10559
+ }),
10560
+ /*#__PURE__*/ (0, $3Sbms$jsx)("p", {
10561
+ className: "text-sm text-gray-700",
10562
+ children: feedbackSent ? t("endView.yourFeedbackHelpsUs") : t("endView.pleaseRateYourExperienceBelow")
10563
+ })
10564
+ ]
10565
+ }),
10566
+ !feedbackSent && /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10567
+ className: "flex flex-row-reverse",
10568
+ children: $df41bfe6da05853a$var$feedbackRatings.map((value)=>/*#__PURE__*/ (0, $3Sbms$jsx)("div", {
10569
+ onClick: ()=>sendSessionFeedback.mutate({
10570
+ rate: value
10571
+ }),
10572
+ className: "transition-colors px-2 text-gray-400 peer peer-hover:text-amber-700 hover:text-amber-700 cursor-pointer",
10573
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $a6fff711012a3991$export$2ee28caa7f1e962e), {})
10574
+ }, value))
10575
+ })
10576
+ ]
10577
+ })
10578
+ ]
10440
10579
  }),
10441
10580
  /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
10442
10581
  className: "flex gap-2 justify-center items-center text-xs text-gray-1000 [&>svg]:h-4 [&>svg]:w-auto",
@@ -11260,7 +11399,7 @@ const $20431dc869bb21e0$var$generateVideoThumbnail = (file)=>{
11260
11399
  });
11261
11400
  };
11262
11401
  const $20431dc869bb21e0$export$b3fd96a52c80b3af = ()=>{
11263
- const { recorderOptions: recorderOptions, videoUpload: videoUpload } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
11402
+ const { recorderOptions: recorderOptions, clientInitResult: clientInitResult } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
11264
11403
  const { t: t } = (0, $3Sbms$useTranslation)();
11265
11404
  const { openAssetsModal: openAssetsModal, addAsset: addAsset, setIncomingAsset: setIncomingAsset, isRecording: isRecording } = (0, $75812785bb101fee$export$2174f25d572f9f31)();
11266
11405
  const reportError = (0, $946223bbb2c552ef$export$5a5695b638d078e7)();
@@ -11280,21 +11419,21 @@ const $20431dc869bb21e0$export$b3fd96a52c80b3af = ()=>{
11280
11419
  try {
11281
11420
  let url;
11282
11421
  let thumbnailUrl;
11283
- let id;
11422
+ let filename;
11284
11423
  if (type === "image") {
11285
11424
  const dataUrl = await $20431dc869bb21e0$var$fileToDataUrl(file);
11286
11425
  const data = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).saveCapture(dataUrl);
11287
11426
  url = data.url;
11288
- id = data.assetId;
11427
+ filename = data.filename;
11289
11428
  } else {
11290
- const data = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).uploadEvent(file);
11429
+ const data = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).uploadAsset(file);
11291
11430
  url = data.url;
11292
- id = data.id;
11431
+ filename = data.filename;
11293
11432
  if (type === "video") thumbnailUrl = await $20431dc869bb21e0$var$generateVideoThumbnail(file);
11294
- if (!url || !id) throw new Error("upload failed");
11433
+ if (!url || !filename) throw new Error("upload failed");
11295
11434
  }
11296
11435
  addAsset({
11297
- id: id,
11436
+ filename: filename,
11298
11437
  mode: mode,
11299
11438
  url: url,
11300
11439
  thumbnailUrl: thumbnailUrl || url,
@@ -11316,13 +11455,13 @@ const $20431dc869bb21e0$export$b3fd96a52c80b3af = ()=>{
11316
11455
  /*#__PURE__*/ (0, $3Sbms$jsx)("input", {
11317
11456
  ref: fileInputRef,
11318
11457
  type: "file",
11319
- accept: videoUpload ? "image/*,video/*,audio/*" : "image/*",
11458
+ accept: clientInitResult.videoUpload ? "image/*,video/*,audio/*" : "image/*",
11320
11459
  className: "hidden",
11321
11460
  onChange: onUploadClick
11322
11461
  }),
11323
11462
  /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
11324
11463
  className: (0, $3Sbms$classnames)("bg-gray-25/50 hover:bg-gray-25/60 active:bg-gray-25/70 rounded-full", {
11325
- invisible: isRecording || !recorderOptions?.enabledModes.includes("photo") && !videoUpload
11464
+ invisible: isRecording || !recorderOptions?.enabledModes.includes("photo") && !clientInitResult.videoUpload
11326
11465
  }),
11327
11466
  icon: !isMedium,
11328
11467
  onClick: ()=>fileInputRef.current?.click(),
@@ -11580,9 +11719,11 @@ const $ea6c91cf7e6319d8$export$20144d37f30919ab = ()=>{
11580
11719
  else if (device.kind === "audiooutput") throw new Error("Audio output not supported");
11581
11720
  throw new Error("Unsupported device info");
11582
11721
  },
11583
- onSettled: ()=>queryClient.invalidateQueries([
11584
- "devicesState"
11585
- ])
11722
+ onSettled: ()=>queryClient.invalidateQueries({
11723
+ queryKey: [
11724
+ "devicesState"
11725
+ ]
11726
+ })
11586
11727
  });
11587
11728
  };
11588
11729
 
@@ -11739,7 +11880,7 @@ const $2ff9d0247afca2f1$export$75b44b566abc4e9c = ()=>{
11739
11880
  className: "bg-gray-50",
11740
11881
  id: "microphone",
11741
11882
  children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectValue), {
11742
- children: updateDevice.isLoading ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Fragment), {
11883
+ children: updateDevice.isPending ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Fragment), {
11743
11884
  children: updateDevice.variables?.label
11744
11885
  }) : undefined
11745
11886
  })
@@ -11799,7 +11940,7 @@ const $c00f86b929ef980e$export$40214e6b2a12030d = ()=>{
11799
11940
  id: "camera",
11800
11941
  children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SelectValue), {
11801
11942
  placeholder: "/",
11802
- children: updateDevice.isLoading ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Fragment), {
11943
+ children: updateDevice.isPending ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Fragment), {
11803
11944
  children: updateDevice.variables?.label
11804
11945
  }) : undefined
11805
11946
  })
@@ -12276,7 +12417,6 @@ const $5b15985a93e05fe7$export$e9b744e15e8fe06f = ()=>{
12276
12417
 
12277
12418
 
12278
12419
 
12279
-
12280
12420
  const $701bafa18dab70d0$export$f56b3b5841ad32ae = ({ state: state, mode: mode, url: url })=>{
12281
12421
  const { t: t } = (0, $3Sbms$useTranslation)();
12282
12422
  return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Dialog), {
@@ -12509,7 +12649,7 @@ const $2e0820b96c3c65d5$export$d70ec5859ea7c9bc = ({ asset: asset, canRemove: ca
12509
12649
  }),
12510
12650
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $cec166f8085cb2c0$export$520a0918a6dd04fd), {
12511
12651
  state: assetDeleteModalState,
12512
- onDelete: ()=>removeAsset(asset.id)
12652
+ onDelete: ()=>removeAsset(asset.filename)
12513
12653
  }),
12514
12654
  /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
12515
12655
  className: "flex items-center gap-2.5 p-2 border border-gray-200 rounded-lg",
@@ -12550,7 +12690,7 @@ const $2e0820b96c3c65d5$export$d70ec5859ea7c9bc = ({ asset: asset, canRemove: ca
12550
12690
  })
12551
12691
  })
12552
12692
  ]
12553
- }, asset.id),
12693
+ }, asset.filename),
12554
12694
  asset.mode !== "photo" && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $64dee502cbd6331e$export$1ea93f9eface5983), {
12555
12695
  duration: asset.duration,
12556
12696
  averageAudioLevel: asset.averageAudioLevel
@@ -12561,17 +12701,120 @@ const $2e0820b96c3c65d5$export$d70ec5859ea7c9bc = ({ asset: asset, canRemove: ca
12561
12701
 
12562
12702
 
12563
12703
 
12704
+
12705
+
12706
+ const $a5dd8f67439dd9eb$var$getStoredAssets = async ()=>{
12707
+ try {
12708
+ const storedAssets = JSON.parse(localStorage.getItem("snapcall_assets") || "[]");
12709
+ const assets = await Promise.all(storedAssets.map(async (storedAsset)=>{
12710
+ try {
12711
+ let { url: url, thumbnailUrl: thumbnailUrl } = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).readAsset(storedAsset.filename);
12712
+ if (url) {
12713
+ if (storedAsset.mode === "photo") thumbnailUrl = url;
12714
+ return {
12715
+ ...storedAsset,
12716
+ url: url,
12717
+ thumbnailUrl: thumbnailUrl
12718
+ };
12719
+ }
12720
+ } catch (error) {
12721
+ $a5dd8f67439dd9eb$export$df987b50509121ea(storedAsset.filename);
12722
+ }
12723
+ }));
12724
+ return assets.filter((asset)=>Boolean(asset?.filename));
12725
+ } catch (err) {}
12726
+ return [];
12727
+ };
12728
+ const $a5dd8f67439dd9eb$export$cfdbe7fcc2578443 = (asset)=>{
12729
+ try {
12730
+ const storedAsset = JSON.parse(localStorage.getItem("snapcall_assets") || "[]");
12731
+ storedAsset.push({
12732
+ ...asset,
12733
+ url: undefined,
12734
+ thumbnailUrl: null
12735
+ });
12736
+ localStorage.setItem("snapcall_assets", JSON.stringify(storedAsset));
12737
+ } catch (err) {}
12738
+ };
12739
+ const $a5dd8f67439dd9eb$export$df987b50509121ea = (filename)=>{
12740
+ try {
12741
+ const storedAsset = JSON.parse(localStorage.getItem("snapcall_assets") || "[]");
12742
+ localStorage.setItem("snapcall_assets", JSON.stringify(storedAsset.filter((asset)=>{
12743
+ return asset.filename !== filename;
12744
+ })));
12745
+ } catch (err) {}
12746
+ };
12747
+ const $a5dd8f67439dd9eb$export$931d641a2a152cf = ()=>{
12748
+ const storedAssets = (0, $3Sbms$useQuery)({
12749
+ queryKey: [
12750
+ "stored-assets"
12751
+ ],
12752
+ queryFn: ()=>$a5dd8f67439dd9eb$var$getStoredAssets(),
12753
+ retry: false,
12754
+ refetchOnMount: false,
12755
+ refetchOnReconnect: false,
12756
+ refetchOnWindowFocus: false,
12757
+ staleTime: Infinity
12758
+ });
12759
+ return storedAssets;
12760
+ };
12761
+
12762
+
12763
+
12764
+
12765
+ const $3ecacdd28d707ec1$var$eventTypes = {
12766
+ screen: "screenshare",
12767
+ photo: "image",
12768
+ video: "video",
12769
+ audio: "audio"
12770
+ };
12564
12771
  const $3ecacdd28d707ec1$export$c01bb29adf88f117 = ({ state: state })=>{
12565
12772
  const { t: t } = (0, $3Sbms$useTranslation)();
12566
12773
  const { assets: assets, incomingAsset: incomingAsset } = (0, $75812785bb101fee$export$2174f25d572f9f31)();
12567
- const [sent, setSent] = (0, $3Sbms$useState)(false);
12774
+ const sendMutation = (0, $3Sbms$useMutation)({
12775
+ mutationFn: async ()=>{
12776
+ try {
12777
+ const events = assets.map((asset)=>{
12778
+ return {
12779
+ filename: asset.filename,
12780
+ type: $3ecacdd28d707ec1$var$eventTypes[asset.mode]
12781
+ };
12782
+ });
12783
+ const results = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).createEvents(events);
12784
+ let errors = results.filter((result)=>{
12785
+ if (result?.success) {
12786
+ (0, $a5dd8f67439dd9eb$export$df987b50509121ea)(result.filename);
12787
+ return false;
12788
+ }
12789
+ return true;
12790
+ });
12791
+ if (errors.length > 0) {
12792
+ reportError({
12793
+ code: "CRE_EV_1",
12794
+ error: "failed to create assets"
12795
+ });
12796
+ throw new Error("some media not saved");
12797
+ }
12798
+ (0, $c9e496369b59be7a$export$2f377c2162fd02b2).release();
12799
+ return results;
12800
+ } catch (error) {
12801
+ reportError({
12802
+ code: "CRE_EV_1",
12803
+ error: "failed to create assets"
12804
+ });
12805
+ console.log(error);
12806
+ throw error;
12807
+ }
12808
+ }
12809
+ });
12810
+ const reportError = (0, $946223bbb2c552ef$export$5a5695b638d078e7)();
12568
12811
  const isMedium = window.matchMedia("(min-width: 768px)").matches;
12569
12812
  return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $79bae5c9904f9029$export$56d72fe406945300), {
12570
12813
  type: isMedium ? "dialog" : "sheet",
12571
- showClose: !sent,
12814
+ showClose: !sendMutation.isSuccess,
12572
12815
  children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $79bae5c9904f9029$export$e943710ec76a9465), {
12573
- open: sent ? true : state.isOpen,
12574
- onOpenChange: sent ? ()=>{} : state.setOpen,
12816
+ open: sendMutation.isSuccess ? true : state.isOpen,
12817
+ onOpenChange: sendMutation.isSuccess ? ()=>{} : state.setOpen,
12575
12818
  children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $79bae5c9904f9029$export$4cf67c05c32f37ce), {
12576
12819
  className: "w-full max-h-[90vh] overflow-auto",
12577
12820
  children: [
@@ -12579,7 +12822,7 @@ const $3ecacdd28d707ec1$export$c01bb29adf88f117 = ({ state: state })=>{
12579
12822
  children: [
12580
12823
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $79bae5c9904f9029$export$5e9fc1357420b7eb), {
12581
12824
  className: "text-left flex items-center gap-2",
12582
- children: sent ? /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Fragment), {
12825
+ children: sendMutation.isSuccess ? /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Fragment), {
12583
12826
  children: [
12584
12827
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$CheckCircleIcon), {
12585
12828
  size: 18,
@@ -12594,7 +12837,7 @@ const $3ecacdd28d707ec1$export$c01bb29adf88f117 = ({ state: state })=>{
12594
12837
  count: assets.length
12595
12838
  })
12596
12839
  }),
12597
- sent && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $79bae5c9904f9029$export$51c201eb88940e0f), {
12840
+ sendMutation.isSuccess && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $79bae5c9904f9029$export$51c201eb88940e0f), {
12598
12841
  children: t("recorder.clipSubmissionDescription")
12599
12842
  })
12600
12843
  ]
@@ -12604,8 +12847,8 @@ const $3ecacdd28d707ec1$export$c01bb29adf88f117 = ({ state: state })=>{
12604
12847
  children: [
12605
12848
  assets.map((asset)=>/*#__PURE__*/ (0, $3Sbms$jsx)((0, $2e0820b96c3c65d5$export$d70ec5859ea7c9bc), {
12606
12849
  asset: asset,
12607
- canRemove: !sent
12608
- }, asset.id)),
12850
+ canRemove: !sendMutation.isSuccess
12851
+ }, asset.filename)),
12609
12852
  incomingAsset && /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
12610
12853
  className: "flex items-center justify-center p-2 border border-gray-200 rounded-lg",
12611
12854
  children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SpinnerIcon), {
@@ -12613,10 +12856,10 @@ const $3ecacdd28d707ec1$export$c01bb29adf88f117 = ({ state: state })=>{
12613
12856
  className: "text-blue-700 animate-spin"
12614
12857
  })
12615
12858
  }),
12616
- !sent && /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
12859
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
12617
12860
  className: "mt-1",
12618
12861
  variant: "secondary",
12619
- onClick: state.close,
12862
+ onClick: sendMutation.isSuccess ? ()=>window.location.reload() : state.close,
12620
12863
  children: [
12621
12864
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$PlusCircleIcon), {
12622
12865
  size: 18
@@ -12627,14 +12870,16 @@ const $3ecacdd28d707ec1$export$c01bb29adf88f117 = ({ state: state })=>{
12627
12870
  })
12628
12871
  ]
12629
12872
  }),
12630
- !sent && /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
12873
+ !sendMutation.isSuccess && /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$Button), {
12631
12874
  className: "w-full",
12632
12875
  onClick: ()=>{
12633
- setSent(true);
12634
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).release();
12876
+ sendMutation.mutate();
12635
12877
  },
12636
12878
  children: [
12637
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Send3Icon), {
12879
+ sendMutation.isPending ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$SpinnerIcon), {
12880
+ size: 24,
12881
+ className: "text-blue-700 animate-spin"
12882
+ }) : /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Send3Icon), {
12638
12883
  size: 18,
12639
12884
  className: "text-white"
12640
12885
  }),
@@ -12817,9 +13062,9 @@ const $24e31aa1532c4049$export$f9da3144ae2525a3 = ()=>{
12817
13062
  openAssetsModal();
12818
13063
  try {
12819
13064
  const image = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).captureVideo(videoElementRef.current);
12820
- const { url: url, assetId: assetId } = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).saveCapture(image);
13065
+ const { url: url, filename: filename } = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).saveCapture(image);
12821
13066
  addAsset({
12822
- id: assetId,
13067
+ filename: filename,
12823
13068
  mode: "photo",
12824
13069
  url: url,
12825
13070
  thumbnailUrl: url,
@@ -13152,12 +13397,12 @@ const $1783de801b9dd149$export$b916fa2db97921a4 = ({ state: state, flow: flow, c
13152
13397
  children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$AlertDialogContent), {
13153
13398
  className: "w-[334px] md:w-[334px] rounded-xl max-h-screen overflow-y-auto",
13154
13399
  children: [
13155
- flow.steps?.[0]?.image_url ? /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
13400
+ flow.steps?.[0]?.config?.image_url ? /*#__PURE__*/ (0, $3Sbms$jsxs)("div", {
13156
13401
  className: "relative rounded-xl",
13157
13402
  children: [
13158
13403
  /*#__PURE__*/ (0, $3Sbms$jsx)("img", {
13159
13404
  className: "w-full h-[200px] object-cover rounded-[inherit]",
13160
- src: flow.steps?.[0]?.image_url,
13405
+ src: flow.steps?.[0]?.config?.image_url,
13161
13406
  alt: ""
13162
13407
  }),
13163
13408
  /*#__PURE__*/ (0, $3Sbms$jsx)("div", {
@@ -13206,7 +13451,7 @@ const $1783de801b9dd149$export$b916fa2db97921a4 = ({ state: state, flow: flow, c
13206
13451
  }),
13207
13452
  /*#__PURE__*/ (0, $3Sbms$jsx)("p", {
13208
13453
  className: "text-sm text-gray-700 whitespace-pre-line",
13209
- children: flow.steps?.[0]?.translation?.description || flow.steps?.[0]?.description
13454
+ children: flow.steps?.[0]?.translation?.description || flow.steps?.[0]?.config?.description
13210
13455
  }),
13211
13456
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$AlertDialogFooter), {
13212
13457
  children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Button), {
@@ -13334,9 +13579,10 @@ const $a272d78208225664$export$54c6bcb39df9c9b9 = ({ state: state, flow: flow })
13334
13579
 
13335
13580
 
13336
13581
 
13582
+
13337
13583
  const $d6943d128e6c8399$var$browser = (0, $3Sbms$bowser).parse(window.navigator.userAgent);
13338
13584
  const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
13339
- const { flow: flow, flowV0: flowV0, recorderOptions: recorderOptions } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
13585
+ const { clientInitResult: clientInitResult, recorderOptions: recorderOptions } = (0, $3Sbms$useContext)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039));
13340
13586
  const [mode, setMode] = (0, $3Sbms$useState)(recorderOptions?.defaultMode || "photo");
13341
13587
  const [assets, setAssets] = (0, $3Sbms$useState)([]);
13342
13588
  const [isRecording, setIsRecording] = (0, $3Sbms$useState)(false);
@@ -13344,29 +13590,44 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
13344
13590
  const videoRef = (0, $3Sbms$useRef)(null);
13345
13591
  const assetsModalState = (0, $3Sbms$useOverlayTriggerState)({});
13346
13592
  const flowV0ModalState = (0, $3Sbms$useOverlayTriggerState)({
13347
- defaultOpen: Boolean(flowV0)
13593
+ defaultOpen: Boolean(clientInitResult.flowV0 && !clientInitResult.flow)
13348
13594
  });
13349
13595
  const flowModalState = (0, $3Sbms$useOverlayTriggerState)({
13350
- defaultOpen: flow && !flowV0
13596
+ defaultOpen: Boolean(clientInitResult.flow)
13351
13597
  });
13352
13598
  const switchToMobileModalState = (0, $3Sbms$useOverlayTriggerState)({
13353
- defaultOpen: $d6943d128e6c8399$var$browser.platform.type === "desktop" && !flow && !flowV0
13599
+ defaultOpen: $d6943d128e6c8399$var$browser.platform.type === "desktop" && !clientInitResult.flow && !clientInitResult.flowV0
13354
13600
  });
13355
13601
  const reportError = (0, $946223bbb2c552ef$export$5a5695b638d078e7)();
13356
13602
  const { company: company } = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getState();
13357
13603
  const devicesState = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).getDevicesState();
13358
13604
  const hasVideo = devicesState.camera.enabled || devicesState.screenshare.enabled;
13359
13605
  const addAsset = (0, $3Sbms$useCallback)((asset)=>{
13606
+ (0, $a5dd8f67439dd9eb$export$cfdbe7fcc2578443)(asset);
13360
13607
  setAssets((currentAssets)=>[
13361
13608
  ...currentAssets,
13362
13609
  asset
13363
13610
  ]);
13364
13611
  setIncomingAsset(null);
13365
13612
  }, []);
13366
- const removeAsset = async (assetId)=>{
13613
+ const storedAssets = (0, $a5dd8f67439dd9eb$export$931d641a2a152cf)();
13614
+ (0, $3Sbms$useEffect)(()=>{
13615
+ storedAssets.data?.forEach((storedAsset)=>{
13616
+ try {
13617
+ setAssets((currentAssets)=>[
13618
+ ...currentAssets,
13619
+ storedAsset
13620
+ ]);
13621
+ } catch (error) {}
13622
+ });
13623
+ }, [
13624
+ storedAssets.data
13625
+ ]);
13626
+ const removeAsset = async (filename)=>{
13367
13627
  try {
13368
- await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).deleteCapture(assetId);
13369
- setAssets((currentAssets)=>currentAssets.filter((asset)=>asset.id !== assetId));
13628
+ (0, $a5dd8f67439dd9eb$export$df987b50509121ea)(filename);
13629
+ await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).deleteAsset(filename);
13630
+ setAssets((currentAssets)=>currentAssets.filter((asset)=>asset.filename !== filename));
13370
13631
  } catch (error) {
13371
13632
  reportError({
13372
13633
  code: "DEL_CAP_1",
@@ -13375,17 +13636,26 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
13375
13636
  }
13376
13637
  };
13377
13638
  (0, $3Sbms$useEffect)(()=>{
13378
- const onRecordStopped = (event)=>{
13379
- const { url: url, assetId: assetId } = event.detail;
13639
+ const onRecordStopped = async (event)=>{
13380
13640
  setIsRecording(false);
13381
- if (incomingAsset) {
13641
+ const { filename: filename, durationMs: durationMs, sizeInBytes: sizeInBytes, success: success } = event.detail;
13642
+ const { url: url } = await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).readAsset(filename);
13643
+ const durationSec = durationMs ? Math.round(durationMs / 1000) : undefined;
13644
+ console.log("onRecordStopped", `size: ${sizeInBytes} bytes`, `duration: ${durationSec} sec`);
13645
+ if (!success || sizeInBytes === 0) {
13646
+ setIncomingAsset(null);
13647
+ reportError({
13648
+ code: "REC_4",
13649
+ error: "error in the recording chain"
13650
+ });
13651
+ } else if (incomingAsset) {
13382
13652
  const averageAudioLevel = (0, $c9e496369b59be7a$export$2f377c2162fd02b2).audioLevel?.stopAverageAnalysis();
13383
13653
  addAsset({
13384
- id: assetId,
13654
+ filename: filename,
13385
13655
  mode: incomingAsset.mode,
13386
13656
  url: url,
13387
13657
  thumbnailUrl: incomingAsset.thumbnailUrl,
13388
- duration: Math.round((Date.now() - incomingAsset.createdAt) / 1000),
13658
+ duration: durationSec,
13389
13659
  averageAudioLevel: averageAudioLevel || 0,
13390
13660
  createdAt: incomingAsset.createdAt
13391
13661
  });
@@ -13397,6 +13667,7 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
13397
13667
  };
13398
13668
  }, [
13399
13669
  addAsset,
13670
+ reportError,
13400
13671
  incomingAsset
13401
13672
  ]);
13402
13673
  (0, $3Sbms$useEffect)(()=>{
@@ -13445,14 +13716,14 @@ const $d6943d128e6c8399$export$336a011955157f9a = ()=>{
13445
13716
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $cdbb2eb5311c616f$export$f9d8408fefd786da), {
13446
13717
  state: switchToMobileModalState
13447
13718
  }),
13448
- flow && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $1783de801b9dd149$export$b916fa2db97921a4), {
13719
+ clientInitResult.flow && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $1783de801b9dd149$export$b916fa2db97921a4), {
13449
13720
  state: flowModalState,
13450
- flow: flow,
13721
+ flow: clientInitResult.flow,
13451
13722
  companyLogoUrl: company?.avatar_url
13452
13723
  }),
13453
- flowV0 && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $a272d78208225664$export$54c6bcb39df9c9b9), {
13724
+ clientInitResult.flowV0 && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $a272d78208225664$export$54c6bcb39df9c9b9), {
13454
13725
  state: flowV0ModalState,
13455
- flow: flowV0
13726
+ flow: clientInitResult.flowV0
13456
13727
  }),
13457
13728
  /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3ecacdd28d707ec1$export$c01bb29adf88f117), {
13458
13729
  state: assetsModalState
@@ -13511,7 +13782,6 @@ const $91d20ee7d2ade85c$export$669f6ea7d267feaf = ()=>{
13511
13782
 
13512
13783
 
13513
13784
 
13514
-
13515
13785
  const $095542f48ed9fed0$export$8d6498a96ae0e73f = ({ className: className, type: type, state: state, onClick: onClick })=>{
13516
13786
  const { t: t } = (0, $3Sbms$useTranslation)();
13517
13787
  const iconEl = type === "camera" ? state === "on" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$VideoRecorderIcon), {}) : /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$VideoRecorderOffIcon), {}) : state === "on" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Microphone1Icon), {}) : /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$MicrophoneOff1Icon), {});
@@ -13778,9 +14048,11 @@ const $8f7af36c0532a6c4$var$GreetingView = ()=>{
13778
14048
  name: ""
13779
14049
  }
13780
14050
  });
13781
- const publicPage = (0, $3Sbms$useQuery)([
13782
- (0, $c9e496369b59be7a$export$2f377c2162fd02b2).defaultPublicPage?.token
13783
- ], ()=>(0, $c9e496369b59be7a$export$2f377c2162fd02b2).getPublicPage((0, $c9e496369b59be7a$export$2f377c2162fd02b2).defaultPublicPage?.token || ""), {
14051
+ const publicPage = (0, $3Sbms$useQuery)({
14052
+ queryKey: [
14053
+ "public-page"
14054
+ ],
14055
+ queryFn: ()=>(0, $c9e496369b59be7a$export$2f377c2162fd02b2).getPublicPage((0, $c9e496369b59be7a$export$2f377c2162fd02b2).defaultPublicPage?.token || ""),
13784
14056
  enabled: Boolean((0, $c9e496369b59be7a$export$2f377c2162fd02b2).defaultPublicPage?.token),
13785
14057
  staleTime: Infinity
13786
14058
  });
@@ -14243,19 +14515,23 @@ const $c6a143d1088045e0$export$ed71079a84f20635 = ()=>{
14243
14515
  });
14244
14516
  const acceptWaitingRequest = (0, $3Sbms$useMutation)({
14245
14517
  mutationFn: (id)=>(0, $c9e496369b59be7a$export$2f377c2162fd02b2).acceptAccessRequest(id),
14246
- onSettled: ()=>queryClient.invalidateQueries([
14247
- "waitingRequests"
14248
- ])
14518
+ onSettled: ()=>queryClient.invalidateQueries({
14519
+ queryKey: [
14520
+ "waitingRequests"
14521
+ ]
14522
+ })
14249
14523
  });
14250
14524
  const denyWaitingRequest = (0, $3Sbms$useMutation)({
14251
14525
  mutationFn: (id)=>(0, $c9e496369b59be7a$export$2f377c2162fd02b2).denyAccessRequest(id),
14252
- onSettled: ()=>queryClient.invalidateQueries([
14253
- "waitingRequests"
14254
- ])
14526
+ onSettled: ()=>queryClient.invalidateQueries({
14527
+ queryKey: [
14528
+ "waitingRequests"
14529
+ ]
14530
+ })
14255
14531
  });
14256
14532
  const hasWaitingRequests = (waitingRequests.data?.length || 0) > 0;
14257
14533
  const firstWaitingRequest = waitingRequests.data?.[0];
14258
- const isProcessingWaitingRequest = acceptWaitingRequest.isLoading || denyWaitingRequest.isLoading;
14534
+ const isProcessingWaitingRequest = acceptWaitingRequest.isPending || denyWaitingRequest.isPending;
14259
14535
  (0, $3Sbms$useEffect)(()=>{
14260
14536
  const onAccessRequest = (event)=>{
14261
14537
  queryClient.setQueryData([
@@ -14342,9 +14618,22 @@ const $c6a143d1088045e0$export$ed71079a84f20635 = ()=>{
14342
14618
  };
14343
14619
 
14344
14620
 
14621
+
14622
+ const $5916a04ef33296ce$export$6bd92120cafe6ad8 = (options = {})=>{
14623
+ return (0, $3Sbms$useQuery)({
14624
+ queryKey: [
14625
+ "dashboard-session"
14626
+ ],
14627
+ queryFn: ()=>fetch(`${"https://app.snapcall.io"}/api/user`, {
14628
+ credentials: "include"
14629
+ }).then((response)=>response.json()),
14630
+ ...options
14631
+ });
14632
+ };
14633
+
14634
+
14345
14635
  const $26ed036cbc17809a$var$currentTheme = (0, $52580db2e49cdd90$export$3bfd0d5209a8006a)();
14346
14636
  const $26ed036cbc17809a$var$currentLanguage = (0, $a3e657fb86ae23f3$export$604ba5624273df44)();
14347
- const $26ed036cbc17809a$var$queryClient = new (0, $3Sbms$QueryClient)();
14348
14637
  let $26ed036cbc17809a$var$timestampCriticalError = -1;
14349
14638
  const $26ed036cbc17809a$var$endViewStates = [
14350
14639
  "ended",
@@ -14352,8 +14641,9 @@ const $26ed036cbc17809a$var$endViewStates = [
14352
14641
  "expired",
14353
14642
  "full"
14354
14643
  ];
14355
- const $26ed036cbc17809a$var$StreamUI = ({ options: options })=>{
14644
+ const $26ed036cbc17809a$var$StreamUI = ({ options: baseOptions })=>{
14356
14645
  const { t: t } = (0, $3Sbms$useTranslation)();
14646
+ const [options, setOptions] = (0, $3Sbms$useState)(baseOptions);
14357
14647
  const [selfPeerId, setSelfPeerId] = (0, $3Sbms$useState)(undefined);
14358
14648
  const streamUIContainerRef = (0, $3Sbms$useRef)(null);
14359
14649
  const videosContainerRef = (0, $3Sbms$useRef)(null);
@@ -14382,10 +14672,17 @@ const $26ed036cbc17809a$var$StreamUI = ({ options: options })=>{
14382
14672
  const [isRecordingStartPopupOpen, setRecordingStartPopupOpen] = (0, $3Sbms$useState)(false);
14383
14673
  const [permissions, setPermissions] = (0, $3Sbms$useState)([]);
14384
14674
  const [plan, setPlan] = (0, $3Sbms$useState)(undefined);
14385
- const [flows, setFlows] = (0, $3Sbms$useState)({});
14386
- const [videoUpload, setVideoUpload] = (0, $3Sbms$useState)(false);
14387
14675
  const [recorderOptions, setRecorderOptions] = (0, $3Sbms$useState)(options.recorder);
14676
+ const [clientInitResult, setClientInitResult] = (0, $3Sbms$useState)({});
14388
14677
  const isFirstRender = (0, $648652ea36cc4fd9$export$5964c316e853650f)();
14678
+ const dashboardSession = (0, $5916a04ef33296ce$export$6bd92120cafe6ad8)({
14679
+ enabled: !options.disableSessionFetching,
14680
+ staleTime: Infinity,
14681
+ retry: false,
14682
+ refetchOnMount: false,
14683
+ refetchOnReconnect: false,
14684
+ refetchOnWindowFocus: false
14685
+ });
14389
14686
  const orientation = (containerWidth || window.screen.width) > (containerHeight || window.screen.height) ? "landscape" : "portrait";
14390
14687
  const styledTheme = theme === "dark" ? (0, $52580db2e49cdd90$export$3e936a8db52a10a0) : (0, $52580db2e49cdd90$export$f30cb9bc4f736419);
14391
14688
  const onWebcamUpdate = (event)=>{
@@ -14491,8 +14788,7 @@ const $26ed036cbc17809a$var$StreamUI = ({ options: options })=>{
14491
14788
  });
14492
14789
  };
14493
14790
  const onClientInitialized = (0, $3Sbms$useCallback)(async (event)=>{
14494
- const { flow: flow, flowV0: flowV0, videoUpload: videoUpload } = event.detail;
14495
- setVideoUpload(videoUpload || false);
14791
+ const { flow: flow } = event.detail;
14496
14792
  const flowStep = flow?.steps[0];
14497
14793
  if (flowStep) {
14498
14794
  const flowStepMode = flowStep.types.map((type)=>type === "image" ? "photo" : type);
@@ -14514,10 +14810,7 @@ const $26ed036cbc17809a$var$StreamUI = ({ options: options })=>{
14514
14810
  setPlan(state.plan);
14515
14811
  setPermissions(state.permissions);
14516
14812
  setSelfPeerId(peerId);
14517
- setFlows({
14518
- flow: flow,
14519
- flowV0: flowV0
14520
- });
14813
+ setClientInitResult(event.detail || {});
14521
14814
  if (!isRecorder && !options.greeting) try {
14522
14815
  if (!options.headless) await (0, $15a01b611391c1e7$export$494039379563c94d)(options);
14523
14816
  if (options.controls?.microphone?.enabled) await (0, $c9e496369b59be7a$export$2f377c2162fd02b2).enableMicrophone();
@@ -14620,104 +14913,131 @@ const $26ed036cbc17809a$var$StreamUI = ({ options: options })=>{
14620
14913
  recorderOptions,
14621
14914
  t
14622
14915
  ]);
14916
+ const initClient = (uiOptions)=>{
14917
+ if (uiOptions.token) (0, $c9e496369b59be7a$export$2f377c2162fd02b2).init(uiOptions.token, {
14918
+ languageCode: uiOptions.language,
14919
+ flowToken: uiOptions.flowToken,
14920
+ recorder: uiOptions.recorder?.enabled,
14921
+ apiKey: uiOptions.apiKey,
14922
+ email: uiOptions.email,
14923
+ profile: uiOptions.profile,
14924
+ authKey: uiOptions.authKey
14925
+ }).catch((err)=>console.error(err));
14926
+ else setStreamState("expired");
14927
+ };
14623
14928
  (0, $3Sbms$useEffect)(()=>{
14624
- if (isFirstRender) {
14625
- if (options.token) (0, $c9e496369b59be7a$export$2f377c2162fd02b2).init(options.token, {
14626
- languageCode: options.language,
14627
- flowToken: options.flowToken,
14628
- recorder: options.recorder?.enabled,
14629
- apiKey: options.apiKey,
14630
- email: options.email,
14631
- profile: options.profile,
14632
- authKey: options.authKey
14633
- }).catch((err)=>console.error(err));
14634
- else setStreamState("expired");
14635
- }
14929
+ if (isFirstRender && options.disableSessionFetching) initClient(options);
14636
14930
  }, [
14637
14931
  options,
14638
14932
  isFirstRender
14639
14933
  ]);
14640
- return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$QueryClientProvider), {
14641
- client: $26ed036cbc17809a$var$queryClient,
14642
- children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039).Provider, {
14643
- value: {
14644
- videoRecording: videoRecording,
14645
- setVideoRecording: setVideoRecording,
14646
- headless: Boolean(options.headless),
14647
- plan: plan,
14648
- permissions: permissions,
14649
- selfPeerId: selfPeerId,
14650
- streamUIContainerRef: streamUIContainerRef,
14651
- videosContainerRef: videosContainerRef,
14652
- remoteTilesContainerRef: remoteTilesContainerRef,
14653
- streamState: streamState,
14654
- setStreamState: setStreamState,
14655
- isQuickConnectPopupVisible: isQuickConnectPopupVisible,
14656
- setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible,
14657
- isSettingsMenuVisible: isSettingsMenuVisible,
14658
- setIsSettingsMenuVisible: setIsSettingsMenuVisible,
14659
- isYoutubePopupVisible: isYoutubePopupVisible,
14660
- setIsYoutubePopupVisible: setIsYoutubePopupVisible,
14661
- isLinksharePopupVisible: isLinksharePopupVisible,
14662
- setIsLinksharePopupVisible: setIsLinksharePopupVisible,
14663
- isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible,
14664
- setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible,
14665
- isBlockedFeaturePopupOpen: isBlockedFeaturePopupOpen,
14666
- setBlockedFeaturePopupOpen: setBlockedFeaturePopupOpen,
14667
- isRecordingStartPopupOpen: isRecordingStartPopupOpen,
14668
- setRecordingStartPopupOpen: setRecordingStartPopupOpen,
14669
- theme: theme,
14670
- setTheme: setTheme,
14671
- language: language,
14672
- setLanguage: setLanguage,
14673
- options: options,
14674
- profile: profile,
14675
- muted: muted,
14676
- streaming: streaming,
14677
- screensharing: screensharing,
14678
- isAgent: isAgent,
14679
- userInteractionTriggered: userInteractionTriggered,
14680
- orientation: orientation,
14681
- flow: flows.flow,
14682
- flowV0: flows.flowV0,
14683
- videoUpload: videoUpload,
14684
- recorderOptions: recorderOptions
14685
- },
14686
- children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$ThemeProvider), {
14687
- theme: styledTheme,
14688
- children: [
14689
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $4fb4815baa04b470$export$20f257fc407da7a3), {}),
14690
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $d6008ea114507578$export$2e2bcd8739ae039), {}),
14691
- /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $4fb4815baa04b470$export$914ddf2021ea8ee6), {
14692
- ref: streamUIContainerRef,
14693
- children: [
14694
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3a42b2ef7646d035$export$2e2bcd8739ae039), {}),
14695
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Toaster), {
14696
- duration: 3000,
14697
- className: "gap-2"
14698
- }),
14699
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $805d92fa41e6e1b0$export$2e2bcd8739ae039), {}),
14700
- isBlockedDevicesPopupOpen && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $6aca0f707e80bf63$export$2e2bcd8739ae039), {
14701
- close: ()=>{
14702
- setUserInteractionTriggered(true);
14703
- setBlockedDevicesPopupOpen(false);
14704
- }
14705
- }),
14706
- streamState === "loading" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $91d20ee7d2ade85c$export$669f6ea7d267feaf), {}) : streamState === "greeting" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $8f7af36c0532a6c4$export$2e2bcd8739ae039), {}) : streamState === "recorder" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $d6943d128e6c8399$export$336a011955157f9a), {}) : streamState === "streaming" ? /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $cce9fd41d8a55a18$export$74636703cfe1eecf), {
14707
- children: [
14708
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c6a143d1088045e0$export$ed71079a84f20635), {}),
14709
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $f235befa4cdc42d6$export$2e2bcd8739ae039), {}),
14710
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $cdab47bb8796991e$export$2e2bcd8739ae039), {}),
14711
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $69a9c49ece80e773$export$2e2bcd8739ae039), {}),
14712
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $01986a58bfba8001$export$2e2bcd8739ae039), {})
14713
- ]
14714
- }) : $26ed036cbc17809a$var$endViewStates.includes(streamState) ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $df41bfe6da05853a$export$2e2bcd8739ae039), {
14715
- state: streamState
14716
- }) : /*#__PURE__*/ (0, $3Sbms$jsx)((0, $91d20ee7d2ade85c$export$669f6ea7d267feaf), {})
14717
- ]
14718
- })
14719
- ]
14720
- })
14934
+ (0, $3Sbms$useEffect)(()=>{
14935
+ if (dashboardSession.isSuccess || dashboardSession.isError) {
14936
+ const newOptions = {
14937
+ ...options,
14938
+ apiKey: dashboardSession.data?.apiKey || options.apiKey,
14939
+ controls: {
14940
+ ...options.controls,
14941
+ camera: {
14942
+ ...options.controls?.camera,
14943
+ enabled: dashboardSession.data?.settings?.stream?.cameraEnabled ?? options.controls?.camera?.enabled
14944
+ },
14945
+ microphone: {
14946
+ ...options.controls?.microphone,
14947
+ enabled: dashboardSession.data?.settings?.stream?.microphoneEnabled ?? options.controls?.microphone?.enabled
14948
+ }
14949
+ },
14950
+ profile: {
14951
+ name: dashboardSession.data?.name || options.profile?.name,
14952
+ image: dashboardSession.data?.settings?.avatar_url || options.profile?.image
14953
+ }
14954
+ };
14955
+ setOptions(newOptions);
14956
+ if (dashboardSession.data?.settings?.language) setLanguage(dashboardSession.data.settings.language);
14957
+ initClient(newOptions);
14958
+ }
14959
+ // eslint-disable-next-line react-hooks/exhaustive-deps
14960
+ }, [
14961
+ dashboardSession.data,
14962
+ dashboardSession.isSuccess,
14963
+ dashboardSession.isError
14964
+ ]);
14965
+ return /*#__PURE__*/ (0, $3Sbms$jsx)((0, $5f30d8bf4f04621e$export$2e2bcd8739ae039).Provider, {
14966
+ value: {
14967
+ videoRecording: videoRecording,
14968
+ setVideoRecording: setVideoRecording,
14969
+ headless: Boolean(options.headless),
14970
+ plan: plan,
14971
+ permissions: permissions,
14972
+ selfPeerId: selfPeerId,
14973
+ streamUIContainerRef: streamUIContainerRef,
14974
+ videosContainerRef: videosContainerRef,
14975
+ remoteTilesContainerRef: remoteTilesContainerRef,
14976
+ streamState: streamState,
14977
+ setStreamState: setStreamState,
14978
+ isQuickConnectPopupVisible: isQuickConnectPopupVisible,
14979
+ setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible,
14980
+ isSettingsMenuVisible: isSettingsMenuVisible,
14981
+ setIsSettingsMenuVisible: setIsSettingsMenuVisible,
14982
+ isYoutubePopupVisible: isYoutubePopupVisible,
14983
+ setIsYoutubePopupVisible: setIsYoutubePopupVisible,
14984
+ isLinksharePopupVisible: isLinksharePopupVisible,
14985
+ setIsLinksharePopupVisible: setIsLinksharePopupVisible,
14986
+ isVirtualBackgroundPopupVisible: isVirtualBackgroundPopupVisible,
14987
+ setIsVirtualBackgroundPopupVisible: setIsVirtualBackgroundPopupVisible,
14988
+ isBlockedFeaturePopupOpen: isBlockedFeaturePopupOpen,
14989
+ setBlockedFeaturePopupOpen: setBlockedFeaturePopupOpen,
14990
+ isRecordingStartPopupOpen: isRecordingStartPopupOpen,
14991
+ setRecordingStartPopupOpen: setRecordingStartPopupOpen,
14992
+ theme: theme,
14993
+ setTheme: setTheme,
14994
+ language: language,
14995
+ setLanguage: setLanguage,
14996
+ options: options,
14997
+ profile: profile,
14998
+ muted: muted,
14999
+ streaming: streaming,
15000
+ screensharing: screensharing,
15001
+ isAgent: isAgent,
15002
+ userInteractionTriggered: userInteractionTriggered,
15003
+ orientation: orientation,
15004
+ clientInitResult: clientInitResult,
15005
+ recorderOptions: recorderOptions
15006
+ },
15007
+ children: /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $3Sbms$ThemeProvider), {
15008
+ theme: styledTheme,
15009
+ children: [
15010
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $4fb4815baa04b470$export$20f257fc407da7a3), {}),
15011
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $d6008ea114507578$export$2e2bcd8739ae039), {}),
15012
+ /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $4fb4815baa04b470$export$914ddf2021ea8ee6), {
15013
+ ref: streamUIContainerRef,
15014
+ children: [
15015
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3a42b2ef7646d035$export$2e2bcd8739ae039), {}),
15016
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$Toaster), {
15017
+ duration: 3000,
15018
+ className: "gap-2"
15019
+ }),
15020
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $805d92fa41e6e1b0$export$2e2bcd8739ae039), {}),
15021
+ isBlockedDevicesPopupOpen && /*#__PURE__*/ (0, $3Sbms$jsx)((0, $6aca0f707e80bf63$export$2e2bcd8739ae039), {
15022
+ close: ()=>{
15023
+ setUserInteractionTriggered(true);
15024
+ setBlockedDevicesPopupOpen(false);
15025
+ }
15026
+ }),
15027
+ streamState === "loading" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $91d20ee7d2ade85c$export$669f6ea7d267feaf), {}) : streamState === "greeting" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $8f7af36c0532a6c4$export$2e2bcd8739ae039), {}) : streamState === "recorder" ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $d6943d128e6c8399$export$336a011955157f9a), {}) : streamState === "streaming" ? /*#__PURE__*/ (0, $3Sbms$jsxs)((0, $cce9fd41d8a55a18$export$74636703cfe1eecf), {
15028
+ children: [
15029
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $c6a143d1088045e0$export$ed71079a84f20635), {}),
15030
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $f235befa4cdc42d6$export$2e2bcd8739ae039), {}),
15031
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $cdab47bb8796991e$export$2e2bcd8739ae039), {}),
15032
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $69a9c49ece80e773$export$2e2bcd8739ae039), {}),
15033
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $01986a58bfba8001$export$2e2bcd8739ae039), {})
15034
+ ]
15035
+ }) : $26ed036cbc17809a$var$endViewStates.includes(streamState) ? /*#__PURE__*/ (0, $3Sbms$jsx)((0, $df41bfe6da05853a$export$2e2bcd8739ae039), {
15036
+ state: streamState
15037
+ }) : /*#__PURE__*/ (0, $3Sbms$jsx)((0, $91d20ee7d2ade85c$export$669f6ea7d267feaf), {})
15038
+ ]
15039
+ })
15040
+ ]
14721
15041
  })
14722
15042
  });
14723
15043
  };
@@ -14727,7 +15047,7 @@ var $26ed036cbc17809a$export$2e2bcd8739ae039 = $26ed036cbc17809a$var$StreamUI;
14727
15047
 
14728
15048
 
14729
15049
  var $1e2747ca72d0ab49$exports = {};
14730
- $1e2747ca72d0ab49$exports = "*, :before, :after, ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #93c5fd80;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n\n.container {\n width: 100%;\n}\n\n@media (width >= 640px) {\n .container {\n max-width: 640px;\n }\n}\n\n@media (width >= 768px) {\n .container {\n max-width: 768px;\n }\n}\n\n@media (width >= 1024px) {\n .container {\n max-width: 1024px;\n }\n}\n\n@media (width >= 1280px) {\n .container {\n max-width: 1280px;\n }\n}\n\n@media (width >= 1536px) {\n .container {\n max-width: 1536px;\n }\n}\n\n.sr-only {\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.pointer-events-auto {\n pointer-events: auto;\n}\n\n.visible {\n visibility: visible;\n}\n\n.invisible {\n visibility: hidden;\n}\n\n.fixed {\n position: fixed;\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.inset-0 {\n inset: 0;\n}\n\n.inset-x-0 {\n left: 0;\n right: 0;\n}\n\n.inset-y-0 {\n top: 0;\n bottom: 0;\n}\n\n.-bottom-12 {\n bottom: -3rem;\n}\n\n.-left-12 {\n left: -3rem;\n}\n\n.-right-12 {\n right: -3rem;\n}\n\n.-top-12 {\n top: -3rem;\n}\n\n.bottom-0 {\n bottom: 0;\n}\n\n.bottom-2 {\n bottom: .5rem;\n}\n\n.left-0 {\n left: 0;\n}\n\n.left-1 {\n left: .25rem;\n}\n\n.left-1\\/2 {\n left: 50%;\n}\n\n.left-2 {\n left: .5rem;\n}\n\n.left-\\[50\\%\\] {\n left: 50%;\n}\n\n.right-0 {\n right: 0;\n}\n\n.right-1 {\n right: .25rem;\n}\n\n.right-2 {\n right: .5rem;\n}\n\n.right-6 {\n right: 1.5rem;\n}\n\n.top-0 {\n top: 0;\n}\n\n.top-1\\/2 {\n top: 50%;\n}\n\n.top-2 {\n top: .5rem;\n}\n\n.top-6 {\n top: 1.5rem;\n}\n\n.top-8 {\n top: 2rem;\n}\n\n.top-\\[50\\%\\] {\n top: 50%;\n}\n\n.top-auto {\n top: auto;\n}\n\n.z-40 {\n z-index: 40;\n}\n\n.z-50 {\n z-index: 50;\n}\n\n.z-\\[100\\] {\n z-index: 100;\n}\n\n.z-\\[150\\] {\n z-index: 150;\n}\n\n.-mx-1 {\n margin-left: -.25rem;\n margin-right: -.25rem;\n}\n\n.mx-1 {\n margin-left: .25rem;\n margin-right: .25rem;\n}\n\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.my-1 {\n margin-top: .25rem;\n margin-bottom: .25rem;\n}\n\n.-ml-4 {\n margin-left: -1rem;\n}\n\n.-mr-2 {\n margin-right: -.5rem;\n}\n\n.-mt-4 {\n margin-top: -1rem;\n}\n\n.mb-2 {\n margin-bottom: .5rem;\n}\n\n.mb-4 {\n margin-bottom: 1rem;\n}\n\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n\n.mb-\\[9px\\] {\n margin-bottom: 9px;\n}\n\n.ml-1 {\n margin-left: .25rem;\n}\n\n.mr-2 {\n margin-right: .5rem;\n}\n\n.mr-2\\.5 {\n margin-right: .625rem;\n}\n\n.mr-9 {\n margin-right: 2.25rem;\n}\n\n.mt-1 {\n margin-top: .25rem;\n}\n\n.mt-2 {\n margin-top: .5rem;\n}\n\n.box-border {\n box-sizing: border-box;\n}\n\n.block {\n display: block;\n}\n\n.inline-block {\n display: inline-block;\n}\n\n.inline {\n display: inline;\n}\n\n.flex {\n display: flex;\n}\n\n.inline-flex {\n display: inline-flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.hidden {\n display: none;\n}\n\n.aspect-square {\n aspect-ratio: 1;\n}\n\n.h-1\\/3 {\n height: 33.3333%;\n}\n\n.h-10 {\n height: 2.5rem;\n}\n\n.h-12 {\n height: 3rem;\n}\n\n.h-14 {\n height: 3.5rem;\n}\n\n.h-16 {\n height: 4rem;\n}\n\n.h-2 {\n height: .5rem;\n}\n\n.h-3 {\n height: .75rem;\n}\n\n.h-4 {\n height: 1rem;\n}\n\n.h-6 {\n height: 1.5rem;\n}\n\n.h-8 {\n height: 2rem;\n}\n\n.h-9 {\n height: 2.25rem;\n}\n\n.h-\\[100px\\] {\n height: 100px;\n}\n\n.h-\\[16px\\] {\n height: 16px;\n}\n\n.h-\\[1px\\] {\n height: 1px;\n}\n\n.h-\\[200px\\] {\n height: 200px;\n}\n\n.h-\\[24px\\] {\n height: 24px;\n}\n\n.h-\\[36px\\] {\n height: 36px;\n}\n\n.h-\\[400px\\] {\n height: 400px;\n}\n\n.h-\\[45px\\] {\n height: 45px;\n}\n\n.h-\\[54px\\] {\n height: 54px;\n}\n\n.h-\\[70px\\] {\n height: 70px;\n}\n\n.h-\\[72px\\] {\n height: 72px;\n}\n\n.h-\\[8px\\] {\n height: 8px;\n}\n\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n\n.h-full {\n height: 100%;\n}\n\n.h-px {\n height: 1px;\n}\n\n.h-screen {\n height: 100vh;\n}\n\n.max-h-\\[180px\\] {\n max-height: 180px;\n}\n\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n\n.max-h-\\[70px\\] {\n max-height: 70px;\n}\n\n.max-h-\\[90\\%\\] {\n max-height: 90%;\n}\n\n.max-h-\\[90vh\\] {\n max-height: 90vh;\n}\n\n.max-h-screen {\n max-height: 100vh;\n}\n\n.min-h-0 {\n min-height: 0;\n}\n\n.min-h-9 {\n min-height: 2.25rem;\n}\n\n.min-h-\\[20px\\] {\n min-height: 20px;\n}\n\n.min-h-\\[80px\\] {\n min-height: 80px;\n}\n\n.w-1\\/3 {\n width: 33.3333%;\n}\n\n.w-10 {\n width: 2.5rem;\n}\n\n.w-12 {\n width: 3rem;\n}\n\n.w-16 {\n width: 4rem;\n}\n\n.w-2 {\n width: .5rem;\n}\n\n.w-3 {\n width: .75rem;\n}\n\n.w-3\\/4 {\n width: 75%;\n}\n\n.w-4 {\n width: 1rem;\n}\n\n.w-6 {\n width: 1.5rem;\n}\n\n.w-72 {\n width: 18rem;\n}\n\n.w-8 {\n width: 2rem;\n}\n\n.w-\\[100px\\] {\n width: 100px;\n}\n\n.w-\\[16px\\] {\n width: 16px;\n}\n\n.w-\\[24px\\] {\n width: 24px;\n}\n\n.w-\\[334px\\] {\n width: 334px;\n}\n\n.w-\\[36px\\] {\n width: 36px;\n}\n\n.w-\\[400px\\] {\n width: 400px;\n}\n\n.w-\\[42px\\] {\n width: 42px;\n}\n\n.w-\\[45px\\] {\n width: 45px;\n}\n\n.w-\\[54px\\] {\n width: 54px;\n}\n\n.w-\\[70px\\] {\n width: 70px;\n}\n\n.w-\\[72px\\] {\n width: 72px;\n}\n\n.w-\\[8px\\] {\n width: 8px;\n}\n\n.w-auto {\n width: auto;\n}\n\n.w-full {\n width: 100%;\n}\n\n.w-max {\n width: max-content;\n}\n\n.min-w-0 {\n min-width: 0;\n}\n\n.min-w-\\[144px\\] {\n min-width: 144px;\n}\n\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n\n.min-w-full {\n min-width: 100%;\n}\n\n.max-w-\\[315px\\] {\n max-width: 315px;\n}\n\n.max-w-\\[400px\\] {\n max-width: 400px;\n}\n\n.max-w-\\[500px\\] {\n max-width: 500px;\n}\n\n.max-w-\\[70px\\] {\n max-width: 70px;\n}\n\n.max-w-\\[800px\\] {\n max-width: 800px;\n}\n\n.max-w-\\[90\\%\\] {\n max-width: 90%;\n}\n\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n\n.max-w-full {\n max-width: 100%;\n}\n\n.flex-1 {\n flex: 1;\n}\n\n.flex-shrink-0, .shrink-0 {\n flex-shrink: 0;\n}\n\n.flex-grow, .grow {\n flex-grow: 1;\n}\n\n.grow-0 {\n flex-grow: 0;\n}\n\n.basis-full {\n flex-basis: 100%;\n}\n\n.caption-bottom {\n caption-side: bottom;\n}\n\n.border-collapse {\n border-collapse: collapse;\n}\n\n.-translate-x-1\\/2 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: -50%;\n}\n\n.-translate-y-1\\/2 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: -50%;\n}\n\n.translate-x-0 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: 0px;\n}\n\n.translate-x-0\\.5 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: .125rem;\n}\n\n.translate-x-\\[-50\\%\\] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: -50%;\n}\n\n.translate-y-0 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: 0px;\n}\n\n.translate-y-\\[-50\\%\\] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: -50%;\n}\n\n.-scale-x-\\[1\\], .scale-x-\\[-1\\] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-scale-x: -1;\n}\n\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n.animate-pulse {\n animation: 2s cubic-bezier(.4, 0, .6, 1) infinite pulse;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.animate-spin {\n animation: 1s linear infinite spin;\n}\n\n.cursor-default {\n cursor: default;\n}\n\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.select-none {\n -webkit-user-select: none;\n user-select: none;\n}\n\n.resize {\n resize: both;\n}\n\n.appearance-none {\n appearance: none;\n}\n\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-start {\n align-items: flex-start;\n}\n\n.items-end {\n align-items: flex-end;\n}\n\n.items-center {\n align-items: center;\n}\n\n.items-stretch {\n align-items: stretch;\n}\n\n.justify-end {\n justify-content: flex-end;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.justify-between {\n justify-content: space-between;\n}\n\n.gap-0 {\n gap: 0;\n}\n\n.gap-0\\.5 {\n gap: .125rem;\n}\n\n.gap-1 {\n gap: .25rem;\n}\n\n.gap-1\\.5 {\n gap: .375rem;\n}\n\n.gap-12 {\n gap: 3rem;\n}\n\n.gap-2 {\n gap: .5rem;\n}\n\n.gap-2\\.5 {\n gap: .625rem;\n}\n\n.gap-3 {\n gap: .75rem;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.gap-6 {\n gap: 1.5rem;\n}\n\n.gap-8 {\n gap: 2rem;\n}\n\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(.25rem * var(--tw-space-x-reverse));\n margin-left: calc(.25rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n}\n\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.25rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.375rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-5 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-6 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.divide-x > :not([hidden]) ~ :not([hidden]) {\n border-right-width: calc(1px * var(--tw-divide-x-reverse));\n border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));\n --tw-divide-x-reverse: 0;\n}\n\n.divide-y > :not([hidden]) ~ :not([hidden]) {\n border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\n --tw-divide-y-reverse: 0;\n}\n\n.divide-gray-200 > :not([hidden]) ~ :not([hidden]) {\n border-color: rgb(var(--color-gray-200) / var(--tw-divide-opacity));\n --tw-divide-opacity: 1;\n}\n\n.self-center {\n align-self: center;\n}\n\n.overflow-auto {\n overflow: auto;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.overflow-visible {\n overflow: visible;\n}\n\n.overflow-y-auto {\n overflow-y: auto;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n\n.truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.whitespace-nowrap {\n white-space: nowrap;\n}\n\n.whitespace-pre-line {\n white-space: pre-line;\n}\n\n.rounded {\n border-radius: .25rem;\n}\n\n.rounded-2xl {\n border-radius: 1rem;\n}\n\n.rounded-\\[10px\\] {\n border-radius: 10px;\n}\n\n.rounded-\\[3px\\] {\n border-radius: 3px;\n}\n\n.rounded-\\[4px\\] {\n border-radius: 4px;\n}\n\n.rounded-\\[6px\\] {\n border-radius: 6px;\n}\n\n.rounded-\\[8px\\] {\n border-radius: 8px;\n}\n\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.rounded-lg {\n border-radius: .5rem;\n}\n\n.rounded-md {\n border-radius: .375rem;\n}\n\n.rounded-xl {\n border-radius: .75rem;\n}\n\n.rounded-b-3xl {\n border-bottom-right-radius: 1.5rem;\n border-bottom-left-radius: 1.5rem;\n}\n\n.rounded-t-3xl {\n border-top-left-radius: 1.5rem;\n border-top-right-radius: 1.5rem;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-2 {\n border-width: 2px;\n}\n\n.border-b {\n border-bottom-width: 1px;\n}\n\n.border-l {\n border-left-width: 1px;\n}\n\n.border-r {\n border-right-width: 1px;\n}\n\n.border-t {\n border-top-width: 1px;\n}\n\n.border-amber-700 {\n border-color: rgb(var(--color-amber-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-blue-700 {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-100 {\n border-color: rgb(var(--color-gray-100) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-1000 {\n border-color: rgb(var(--color-gray-1000) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-200 {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-600 {\n border-color: rgb(var(--color-gray-600) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-red-700 {\n border-color: rgb(var(--color-red-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-white\\/10 {\n border-color: #ffffff1a;\n}\n\n.bg-\\[\\#292929\\] {\n background-color: rgb(41 41 41 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-100 {\n background-color: rgb(var(--color-amber-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-200 {\n background-color: rgb(var(--color-amber-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-700 {\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-black\\/25 {\n background-color: #00000040;\n}\n\n.bg-black\\/60 {\n background-color: #0009;\n}\n\n.bg-blue-100 {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-blue-300 {\n background-color: rgb(var(--color-blue-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-blue-700 {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-bronze-300 {\n background-color: rgb(var(--color-bronze-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-100 {\n background-color: rgb(var(--color-brown-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-300 {\n background-color: rgb(var(--color-brown-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-700 {\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-100 {\n background-color: rgb(var(--color-crimson-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-300 {\n background-color: rgb(var(--color-crimson-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-700 {\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-100 {\n background-color: rgb(var(--color-cyan-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-300 {\n background-color: rgb(var(--color-cyan-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-700 {\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gold-300 {\n background-color: rgb(var(--color-gold-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-grass-300 {\n background-color: rgb(var(--color-grass-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-1000 {\n background-color: rgb(var(--color-gray-1000) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-1000\\/25 {\n background-color: rgb(var(--color-gray-1000) / .25);\n}\n\n.bg-gray-1000\\/80 {\n background-color: rgb(var(--color-gray-1000) / .8);\n}\n\n.bg-gray-200 {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-25 {\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-25\\/50 {\n background-color: rgb(var(--color-gray-25) / .5);\n}\n\n.bg-gray-300 {\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-600 {\n background-color: rgb(var(--color-gray-600) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-900 {\n background-color: rgb(var(--color-gray-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-100 {\n background-color: rgb(var(--color-green-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-300 {\n background-color: rgb(var(--color-green-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-700 {\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-indigo-300 {\n background-color: rgb(var(--color-indigo-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-lime-300 {\n background-color: rgb(var(--color-lime-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-orange-100 {\n background-color: rgb(var(--color-orange-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-orange-700 {\n background-color: rgb(var(--color-orange-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-plum-300 {\n background-color: rgb(var(--color-plum-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-purple-300 {\n background-color: rgb(var(--color-purple-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-100 {\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-300 {\n background-color: rgb(var(--color-red-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-700 {\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-700\\/60 {\n background-color: rgb(var(--color-red-700) / .6);\n}\n\n.bg-teal-100 {\n background-color: rgb(var(--color-teal-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-teal-300 {\n background-color: rgb(var(--color-teal-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-teal-700 {\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-transparent {\n background-color: #0000;\n}\n\n.bg-violet-100 {\n background-color: rgb(var(--color-violet-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-violet-300 {\n background-color: rgb(var(--color-violet-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-violet-700 {\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-white {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-yellow-300 {\n background-color: rgb(var(--color-yellow-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cover {\n background-size: cover;\n}\n\n.bg-center {\n background-position: center;\n}\n\n.object-contain {\n object-fit: contain;\n}\n\n.object-cover {\n object-fit: cover;\n}\n\n.p-0 {\n padding: 0;\n}\n\n.p-1 {\n padding: .25rem;\n}\n\n.p-1\\.5 {\n padding: .375rem;\n}\n\n.p-2 {\n padding: .5rem;\n}\n\n.p-2\\.5 {\n padding: .625rem;\n}\n\n.p-3 {\n padding: .75rem;\n}\n\n.p-4 {\n padding: 1rem;\n}\n\n.p-5 {\n padding: 1.25rem;\n}\n\n.p-6 {\n padding: 1.5rem;\n}\n\n.p-8 {\n padding: 2rem;\n}\n\n.p-\\[11px\\] {\n padding: 11px;\n}\n\n.px-2 {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.px-2\\.5 {\n padding-left: .625rem;\n padding-right: .625rem;\n}\n\n.px-3 {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.px-3\\.5 {\n padding-left: .875rem;\n padding-right: .875rem;\n}\n\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.py-0\\.5 {\n padding-top: .125rem;\n padding-bottom: .125rem;\n}\n\n.py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n.py-1\\.5 {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.py-12 {\n padding-top: 3rem;\n padding-bottom: 3rem;\n}\n\n.py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.py-2\\.5 {\n padding-top: .625rem;\n padding-bottom: .625rem;\n}\n\n.py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.pb-2 {\n padding-bottom: .5rem;\n}\n\n.pb-\\[9px\\] {\n padding-bottom: 9px;\n}\n\n.pl-2 {\n padding-left: .5rem;\n}\n\n.pl-4 {\n padding-left: 1rem;\n}\n\n.pr-2 {\n padding-right: .5rem;\n}\n\n.pt-1 {\n padding-top: .25rem;\n}\n\n.pt-10 {\n padding-top: 2.5rem;\n}\n\n.pt-4 {\n padding-top: 1rem;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-center {\n text-align: center;\n}\n\n.align-middle {\n vertical-align: middle;\n}\n\n.text-2xl {\n letter-spacing: -.02em;\n font-size: 24px;\n line-height: 32px;\n}\n\n.text-3xl {\n letter-spacing: -.02em;\n font-size: 30px;\n line-height: 38px;\n}\n\n.text-4xl {\n letter-spacing: -.02em;\n font-size: 36px;\n line-height: 44px;\n}\n\n.text-\\[10px\\] {\n font-size: 10px;\n}\n\n.text-\\[112px\\] {\n font-size: 112px;\n}\n\n.text-\\[30px\\] {\n font-size: 30px;\n}\n\n.text-lg {\n letter-spacing: -.02em;\n font-size: 18px;\n line-height: 22px;\n}\n\n.text-md {\n letter-spacing: -.02em;\n font-size: 16px;\n line-height: 20px;\n}\n\n.text-sm {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.text-xs {\n letter-spacing: -.02em;\n font-size: 12px;\n line-height: 16px;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.font-medium {\n font-weight: 500;\n}\n\n.font-normal {\n font-weight: 400;\n}\n\n.font-semibold {\n font-weight: 600;\n}\n\n.leading-none {\n line-height: 1;\n}\n\n.text-\\[\\#707070\\] {\n color: rgb(112 112 112 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-amber-700 {\n color: rgb(var(--color-amber-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-blue-700 {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-bronze-700 {\n color: rgb(var(--color-bronze-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-brown-700 {\n color: rgb(var(--color-brown-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-crimson-700 {\n color: rgb(var(--color-crimson-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-current {\n color: currentColor;\n}\n\n.text-cyan-700 {\n color: rgb(var(--color-cyan-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gold-700 {\n color: rgb(var(--color-gold-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-grass-700 {\n color: rgb(var(--color-grass-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-1000 {\n color: rgb(var(--color-gray-1000) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-700 {\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-900 {\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-green-700 {\n color: rgb(var(--color-green-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-indigo-700 {\n color: rgb(var(--color-indigo-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-inherit {\n color: inherit;\n}\n\n.text-lime-700 {\n color: rgb(var(--color-lime-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-orange-700 {\n color: rgb(var(--color-orange-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-plum-700 {\n color: rgb(var(--color-plum-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-primary {\n color: rgb(29 28 32 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-purple-700 {\n color: rgb(var(--color-purple-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-red-700 {\n color: rgb(var(--color-red-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-teal-700 {\n color: rgb(var(--color-teal-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-violet-700 {\n color: rgb(var(--color-violet-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-white {\n color: rgb(255 255 255 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-white\\/80 {\n color: #fffc;\n}\n\n.text-yellow-700 {\n color: rgb(var(--color-yellow-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.underline {\n text-decoration-line: underline;\n}\n\n.underline-offset-8 {\n text-underline-offset: 8px;\n}\n\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.opacity-50 {\n opacity: .5;\n}\n\n.shadow-dropdown-sm {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0px 1px 2px 0px #1018280f, 0px 1px 3px 0px #1018281a;\n --tw-shadow-colored: 0px 1px 2px 0px var(--tw-shadow-color), 0px 1px 3px 0px var(--tw-shadow-color);\n}\n\n.shadow-lg {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n}\n\n.shadow-md {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n}\n\n.shadow-sm {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n}\n\n.outline-none {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.outline {\n outline-style: solid;\n}\n\n.ring-1 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-2 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-4 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-\\[3px\\] {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-inset {\n --tw-ring-inset: inset;\n}\n\n.ring-amber-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-amber-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-700 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.ring-brown-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-brown-300) / var(--tw-ring-opacity));\n}\n\n.ring-crimson-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-crimson-300) / var(--tw-ring-opacity));\n}\n\n.ring-cyan-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-cyan-300) / var(--tw-ring-opacity));\n}\n\n.ring-gray-200 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-200) / var(--tw-ring-opacity));\n}\n\n.ring-green-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-green-300) / var(--tw-ring-opacity));\n}\n\n.ring-orange-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-orange-300) / var(--tw-ring-opacity));\n}\n\n.ring-red-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-300) / var(--tw-ring-opacity));\n}\n\n.ring-teal-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-teal-300) / var(--tw-ring-opacity));\n}\n\n.ring-violet-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-violet-300) / var(--tw-ring-opacity));\n}\n\n.ring-white {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity));\n}\n\n.ring-white\\/20 {\n --tw-ring-color: #fff3;\n}\n\n.ring-offset-0 {\n --tw-ring-offset-width: 0px;\n}\n\n.ring-offset-white {\n --tw-ring-offset-color: #fff;\n}\n\n.blur {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n --tw-blur: blur(8px);\n}\n\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.backdrop-blur-\\[30px\\] {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(30px);\n}\n\n.backdrop-blur-lg {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(16px);\n}\n\n.backdrop-blur-sm {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(4px);\n}\n\n.transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter, backdrop-filter;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-all {\n transition-property: all;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-transform {\n transition-property: transform;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.duration-200 {\n transition-duration: .2s;\n}\n\n.duration-500 {\n transition-duration: .5s;\n}\n\n.duration-700 {\n transition-duration: .7s;\n}\n\n.ease-in-out {\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.ease-linear {\n transition-timing-function: linear;\n}\n\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.will-change-transform {\n will-change: transform;\n}\n\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n\n.animate-in {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.fade-in, .fade-in-0 {\n --tw-enter-opacity: 0;\n}\n\n.fade-out {\n --tw-exit-opacity: 0;\n}\n\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n\n.duration-200 {\n animation-duration: .2s;\n}\n\n.duration-500 {\n animation-duration: .5s;\n}\n\n.duration-700 {\n animation-duration: .7s;\n}\n\n.ease-in-out {\n animation-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.ease-linear {\n animation-timing-function: linear;\n}\n\n.ease-out {\n animation-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.paused {\n animation-play-state: paused;\n}\n\n.inter {\n font-family: Inter, sans-serif;\n}\n\n@supports (font-variation-settings: normal) {\n .inter {\n font-family: Inter var, sans-serif;\n }\n}\n\n.pulse-red-700 {\n animation: 2s infinite pulse-red-700;\n transform: scale(1);\n box-shadow: 0 0 #e5484d;\n}\n\n@keyframes pulse-red-700 {\n 0% {\n transform: scale(.95);\n box-shadow: 0 0 #e5484db3;\n }\n\n 70% {\n transform: scale(1);\n box-shadow: 0 0 0 6px #e5484d00;\n }\n\n 100% {\n transform: scale(.95);\n box-shadow: 0 0 #e5484d00;\n }\n}\n\n.placeholder\\:text-gray-700::placeholder {\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.placeholder\\:text-gray-900::placeholder {\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n\n.focus-within\\:z-20:focus-within {\n z-index: 20;\n}\n\n.focus-within\\:border-gray-200:focus-within {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.focus-within\\:bg-gray-100:focus-within {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.focus-within\\:outline:focus-within {\n outline-style: solid;\n}\n\n.focus-within\\:outline-\\[2px\\]:focus-within {\n outline-width: 2px;\n}\n\n.focus-within\\:outline-offset-\\[2px\\]:focus-within {\n outline-offset: 2px;\n}\n\n.focus-within\\:outline-blue-300:focus-within {\n outline-color: rgb(var(--color-blue-300) / 1);\n}\n\n.focus-within\\:outline-red-700:focus-within {\n outline-color: rgb(var(--color-red-700) / 1);\n}\n\n.hover\\:bg-black\\/10:hover {\n background-color: #0000001a;\n}\n\n.hover\\:bg-blue-100:hover {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-50:hover {\n background-color: rgb(var(--color-blue-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-700:hover {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-800:hover {\n background-color: rgb(var(--color-blue-800) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-100:hover {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-200:hover {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-25\\/60:hover {\n background-color: rgb(var(--color-gray-25) / .6);\n}\n\n.hover\\:bg-gray-50:hover {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-red-100:hover {\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-red-800:hover {\n background-color: rgb(var(--color-red-800) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:text-blue-700:hover {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.hover\\:text-white:hover {\n color: rgb(255 255 255 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n\n.focus\\:bg-gray-100:focus {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.focus\\:outline-none:focus {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus\\:ring-1:focus {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus\\:ring-2:focus {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n\n.focus-visible\\:outline-none:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus-visible\\:ring-2:focus-visible {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus-visible\\:ring-blue-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-blue-300:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-300) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-blue-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-gray-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n\n.active\\:bg-blue-200:active {\n background-color: rgb(var(--color-blue-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-blue-900:active {\n background-color: rgb(var(--color-blue-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-100:active {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-200:active {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-25\\/70:active {\n background-color: rgb(var(--color-gray-25) / .7);\n}\n\n.active\\:bg-gray-500:active {\n background-color: rgb(var(--color-gray-500) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-red-200:active {\n background-color: rgb(var(--color-red-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-red-900:active {\n background-color: rgb(var(--color-red-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:text-blue-700:active {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.active\\:text-blue-900:active {\n color: rgb(var(--color-blue-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\:select-none:disabled {\n -webkit-user-select: none;\n user-select: none;\n}\n\n.disabled\\:opacity-40:disabled {\n opacity: .4;\n}\n\n.disabled\\:opacity-50:disabled {\n opacity: .5;\n}\n\n.group:focus-within .group-focus-within\\:bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group:hover .group-hover\\:bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group:active .group-active\\:bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: .7;\n}\n\n.aria-selected\\:bg-blue-100[aria-selected=\"true\"] {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.aria-selected\\:text-blue-700[aria-selected=\"true\"] {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=\"bottom\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: .25rem;\n}\n\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=\"left\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: -.25rem;\n}\n\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=\"right\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: .25rem;\n}\n\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=\"top\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: -.25rem;\n}\n\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=\"checked\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: 1.25rem;\n}\n\n.data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=\"cancel\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: 0px;\n}\n\n.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=\"end\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: var(--radix-toast-swipe-end-x);\n}\n\n.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=\"move\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: var(--radix-toast-swipe-move-x);\n}\n\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=\"closed\"] {\n animation: .2s ease-out accordion-up;\n}\n\n@keyframes accordion-down {\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=\"open\"] {\n animation: .2s ease-out accordion-down;\n}\n\n.data-\\[disabled\\]\\:cursor-not-allowed[data-disabled] {\n cursor: not-allowed;\n}\n\n.data-\\[state\\=checked\\]\\:border-blue-700[data-state=\"checked\"], .data-\\[state\\=on\\]\\:border-blue-700[data-state=\"on\"] {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.data-\\[disabled\\]\\:data-\\[state\\=unchecked\\]\\:bg-gray-300[data-state=\"unchecked\"][data-disabled] {\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[selected\\=true\\]\\:bg-gray-50[data-selected=\"true\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-amber-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-blue-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-bronze-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-bronze-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-brown-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-crimson-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-cyan-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gold-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-gold-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-grass-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-grass-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gray-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-gray-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-green-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-indigo-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-indigo-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-lime-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-lime-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-plum-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-plum-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-purple-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-purple-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-red-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-teal-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-violet-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-yellow-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-yellow-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:bg-white[data-state=\"active\"] {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-blue-700[data-state=\"checked\"] {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-gray-50[data-state=\"checked\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-white[data-state=\"checked\"] {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=selected\\]\\:bg-gray-50[data-state=\"selected\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:text-blue-700[data-state=\"active\"] {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:text-gray-25[data-state=\"active\"] {\n color: rgb(var(--color-gray-25) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.data-\\[disabled\\]\\:opacity-40[data-disabled] {\n opacity: .4;\n}\n\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: .5;\n}\n\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=\"active\"] {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n}\n\n.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=\"move\"] {\n transition-property: none;\n}\n\n.data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n transition-duration: .3s;\n}\n\n.data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n transition-duration: .5s;\n}\n\n.data-\\[state\\=open\\]\\:animate-in[data-state=\"open\"] {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:animate-out[data-state=\"closed\"], .data-\\[swipe\\=end\\]\\:animate-out[data-swipe=\"end\"] {\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n animation-name: exit;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:fade-out-0[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out-80[data-state=\"closed\"] {\n --tw-exit-opacity: .8;\n}\n\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n}\n\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=\"open\"] {\n --tw-enter-scale: .95;\n}\n\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=\"bottom\"] {\n --tw-enter-translate-y: -.5rem;\n}\n\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=\"left\"] {\n --tw-enter-translate-x: .5rem;\n}\n\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=\"right\"] {\n --tw-enter-translate-x: -.5rem;\n}\n\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=\"top\"] {\n --tw-enter-translate-y: .5rem;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-bottom[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-bottom-\\[100\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-left[data-state=\"closed\"] {\n --tw-exit-translate-x: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-left-\\[50\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-x: -50%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-right[data-state=\"closed\"] {\n --tw-exit-translate-x: 100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-top[data-state=\"closed\"] {\n --tw-exit-translate-y: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-bottom[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-bottom-\\[100\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-left[data-state=\"open\"] {\n --tw-enter-translate-x: -100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-left-\\[50\\%\\][data-state=\"open\"] {\n --tw-enter-translate-x: -50%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-right[data-state=\"open\"] {\n --tw-enter-translate-x: 100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n animation-duration: .3s;\n}\n\n.data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n animation-duration: .5s;\n}\n\n.group[data-state=\"open\"] .group-data-\\[state\\=open\\]\\:rotate-180 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-rotate: 180deg;\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.group[data-state=\"on\"] .group-data-\\[state\\=on\\]\\:border-blue-700 {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.group[data-state=\"checked\"] .group-data-\\[state\\=checked\\]\\:bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group[data-state=\"off\"] .group-data-\\[state\\=off\\]\\:bg-transparent {\n background-color: #0000;\n}\n\n.group[data-state=\"off\"] .group-data-\\[state\\=off\\]\\:text-transparent {\n color: #0000;\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:opacity-50 {\n opacity: .5;\n}\n\n@media not all and (width >= 1024px) {\n .max-lg\\:mt-8 {\n margin-top: 2rem;\n }\n\n .max-lg\\:hidden {\n display: none;\n }\n\n .max-lg\\:h-\\[250px\\] {\n height: 250px;\n }\n\n .max-lg\\:w-full {\n width: 100%;\n }\n\n .max-lg\\:flex-col {\n flex-direction: column;\n }\n}\n\n@media not all and (width >= 640px) {\n .max-sm\\:gap-4 {\n gap: 1rem;\n }\n\n .max-sm\\:p-4 {\n padding: 1rem;\n }\n}\n\n@media (width >= 640px) {\n .sm\\:mt-0 {\n margin-top: 0;\n }\n\n .sm\\:w-1\\/2 {\n width: 50%;\n }\n\n .sm\\:max-w-sm {\n max-width: 24rem;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:flex-col {\n flex-direction: column;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:justify-center {\n justify-content: center;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(.5rem * var(--tw-space-x-reverse));\n margin-left: calc(.5rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n }\n\n .data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n}\n\n@media (width >= 768px) {\n .md\\:block {\n display: block;\n }\n\n .md\\:h-\\[550px\\] {\n height: 550px;\n }\n\n .md\\:w-\\[1000px\\] {\n width: 1000px;\n }\n\n .md\\:w-\\[300px\\] {\n width: 300px;\n }\n\n .md\\:w-\\[334px\\] {\n width: 334px;\n }\n\n .md\\:w-\\[500px\\] {\n width: 500px;\n }\n\n .md\\:w-auto {\n width: auto;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:w-screen {\n width: 100vw;\n }\n\n .md\\:max-w-\\[420px\\] {\n max-width: 420px;\n }\n\n .md\\:max-w-\\[90vw\\] {\n max-width: 90vw;\n }\n\n .md\\:flex-row {\n flex-direction: row;\n }\n\n .md\\:items-center {\n align-items: center;\n }\n\n .md\\:justify-start {\n justify-content: flex-start;\n }\n\n .md\\:gap-0 {\n gap: 0;\n }\n\n .md\\:gap-4 {\n gap: 1rem;\n }\n\n .md\\:gap-8 {\n gap: 2rem;\n }\n\n .md\\:divide-y > :not([hidden]) ~ :not([hidden]) {\n border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\n --tw-divide-y-reverse: 0;\n }\n\n .md\\:border-0 {\n border-width: 0;\n }\n\n .md\\:bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n }\n\n .md\\:bg-transparent {\n background-color: #0000;\n }\n\n .md\\:p-0 {\n padding: 0;\n }\n\n .md\\:p-4 {\n padding: 1rem;\n }\n\n .md\\:p-6 {\n padding: 1.5rem;\n }\n\n .md\\:p-8 {\n padding: 2rem;\n }\n\n .md\\:pt-4 {\n padding-top: 1rem;\n }\n}\n\n@media (width >= 1024px) {\n .lg\\:flex-col {\n flex-direction: column;\n }\n\n .lg\\:items-center {\n align-items: center;\n }\n\n .lg\\:gap-2 {\n gap: .5rem;\n }\n\n .lg\\:gap-8 {\n gap: 2rem;\n }\n\n .lg\\:rounded-lg {\n border-radius: .5rem;\n }\n\n .lg\\:border {\n border-width: 1px;\n }\n\n .lg\\:border-gray-200 {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n }\n\n .lg\\:bg-pattern {\n background-image: radial-gradient(50% 50%, #006aff33 0%, #006aff00 100%), linear-gradient(#0000 0%, #fff 100%), linear-gradient(0deg, #0000 0%, #ffffffbf 100%), url(\"data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M40 40V41H41V40H40ZM39 0V40H41V0H39ZM40 39H0V41H40V39Z' fill='%23E8E8E8' mask='url(%23path-1-inside-1_124_242)'/%3E%3C/svg%3E\");\n }\n\n .lg\\:p-6 {\n padding: 1.5rem;\n }\n\n .lg\\:text-center {\n text-align: center;\n }\n\n .lg\\:text-4xl {\n letter-spacing: -.02em;\n font-size: 36px;\n line-height: 44px;\n }\n}\n\n@media (width >= 1280px) {\n .xl\\:rounded-none {\n border-radius: 0;\n }\n}\n\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-blue-100:has([aria-selected]) {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: .375rem;\n border-bottom-left-radius: .375rem;\n}\n\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: .375rem;\n border-bottom-right-radius: .375rem;\n}\n\n.\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=\"checkbox\"]) {\n padding-right: 0;\n}\n\n.\\[\\&\\:not\\(\\[aria-selected\\]\\)\\]\\:hover\\:bg-gray-100:hover:not([aria-selected]) {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&\\>\\*\\]\\:fill-white > * {\n fill: #fff;\n}\n\n.\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] > [role=\"checkbox\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: 2px;\n}\n\n.\\[\\&\\>svg\\]\\:h-4 > svg {\n height: 1rem;\n}\n\n.\\[\\&\\>svg\\]\\:w-auto > svg {\n width: auto;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-sm [cmdk-group-heading] {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n\n.\\[\\&_tr\\:active\\]\\:bg-gray-50 tr:active, .\\[\\&_tr\\:hover\\:active\\]\\:bg-gray-50 tr:hover:active {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&_tr\\:hover\\]\\:bg-gray-25 tr:hover {\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child {\n border-width: 0;\n}\n\n.\\[\\&_tr\\]\\:border-b tr {\n border-bottom-width: 1px;\n}\n";
15050
+ $1e2747ca72d0ab49$exports = "*, :before, :after, ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #93c5fd80;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n\n.container {\n width: 100%;\n}\n\n@media (width >= 640px) {\n .container {\n max-width: 640px;\n }\n}\n\n@media (width >= 768px) {\n .container {\n max-width: 768px;\n }\n}\n\n@media (width >= 1024px) {\n .container {\n max-width: 1024px;\n }\n}\n\n@media (width >= 1280px) {\n .container {\n max-width: 1280px;\n }\n}\n\n@media (width >= 1536px) {\n .container {\n max-width: 1536px;\n }\n}\n\n.sr-only {\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.pointer-events-auto {\n pointer-events: auto;\n}\n\n.visible {\n visibility: visible;\n}\n\n.invisible {\n visibility: hidden;\n}\n\n.fixed {\n position: fixed;\n}\n\n.absolute {\n position: absolute;\n}\n\n.relative {\n position: relative;\n}\n\n.inset-0 {\n inset: 0;\n}\n\n.inset-x-0 {\n left: 0;\n right: 0;\n}\n\n.inset-y-0 {\n top: 0;\n bottom: 0;\n}\n\n.-bottom-12 {\n bottom: -3rem;\n}\n\n.-left-12 {\n left: -3rem;\n}\n\n.-right-12 {\n right: -3rem;\n}\n\n.-top-12 {\n top: -3rem;\n}\n\n.bottom-0 {\n bottom: 0;\n}\n\n.bottom-2 {\n bottom: .5rem;\n}\n\n.left-0 {\n left: 0;\n}\n\n.left-1 {\n left: .25rem;\n}\n\n.left-1\\/2 {\n left: 50%;\n}\n\n.left-2 {\n left: .5rem;\n}\n\n.left-\\[50\\%\\] {\n left: 50%;\n}\n\n.right-0 {\n right: 0;\n}\n\n.right-1 {\n right: .25rem;\n}\n\n.right-2 {\n right: .5rem;\n}\n\n.right-6 {\n right: 1.5rem;\n}\n\n.top-0 {\n top: 0;\n}\n\n.top-1\\/2 {\n top: 50%;\n}\n\n.top-2 {\n top: .5rem;\n}\n\n.top-6 {\n top: 1.5rem;\n}\n\n.top-8 {\n top: 2rem;\n}\n\n.top-\\[50\\%\\] {\n top: 50%;\n}\n\n.top-auto {\n top: auto;\n}\n\n.z-40 {\n z-index: 40;\n}\n\n.z-50 {\n z-index: 50;\n}\n\n.z-\\[100\\] {\n z-index: 100;\n}\n\n.z-\\[150\\] {\n z-index: 150;\n}\n\n.-mx-1 {\n margin-left: -.25rem;\n margin-right: -.25rem;\n}\n\n.mx-1 {\n margin-left: .25rem;\n margin-right: .25rem;\n}\n\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.my-1 {\n margin-top: .25rem;\n margin-bottom: .25rem;\n}\n\n.-ml-4 {\n margin-left: -1rem;\n}\n\n.-mr-2 {\n margin-right: -.5rem;\n}\n\n.-mt-4 {\n margin-top: -1rem;\n}\n\n.mb-2 {\n margin-bottom: .5rem;\n}\n\n.mb-4 {\n margin-bottom: 1rem;\n}\n\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n\n.mb-\\[9px\\] {\n margin-bottom: 9px;\n}\n\n.ml-1 {\n margin-left: .25rem;\n}\n\n.mr-2 {\n margin-right: .5rem;\n}\n\n.mr-2\\.5 {\n margin-right: .625rem;\n}\n\n.mr-9 {\n margin-right: 2.25rem;\n}\n\n.mt-1 {\n margin-top: .25rem;\n}\n\n.mt-2 {\n margin-top: .5rem;\n}\n\n.box-border {\n box-sizing: border-box;\n}\n\n.block {\n display: block;\n}\n\n.inline-block {\n display: inline-block;\n}\n\n.inline {\n display: inline;\n}\n\n.flex {\n display: flex;\n}\n\n.inline-flex {\n display: inline-flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.hidden {\n display: none;\n}\n\n.aspect-square {\n aspect-ratio: 1;\n}\n\n.h-1\\/3 {\n height: 33.3333%;\n}\n\n.h-10 {\n height: 2.5rem;\n}\n\n.h-12 {\n height: 3rem;\n}\n\n.h-14 {\n height: 3.5rem;\n}\n\n.h-16 {\n height: 4rem;\n}\n\n.h-2 {\n height: .5rem;\n}\n\n.h-3 {\n height: .75rem;\n}\n\n.h-4 {\n height: 1rem;\n}\n\n.h-6 {\n height: 1.5rem;\n}\n\n.h-8 {\n height: 2rem;\n}\n\n.h-9 {\n height: 2.25rem;\n}\n\n.h-\\[100px\\] {\n height: 100px;\n}\n\n.h-\\[16px\\] {\n height: 16px;\n}\n\n.h-\\[1px\\] {\n height: 1px;\n}\n\n.h-\\[200px\\] {\n height: 200px;\n}\n\n.h-\\[24px\\] {\n height: 24px;\n}\n\n.h-\\[36px\\] {\n height: 36px;\n}\n\n.h-\\[400px\\] {\n height: 400px;\n}\n\n.h-\\[45px\\] {\n height: 45px;\n}\n\n.h-\\[54px\\] {\n height: 54px;\n}\n\n.h-\\[70px\\] {\n height: 70px;\n}\n\n.h-\\[72px\\] {\n height: 72px;\n}\n\n.h-\\[8px\\] {\n height: 8px;\n}\n\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n\n.h-full {\n height: 100%;\n}\n\n.h-px {\n height: 1px;\n}\n\n.h-screen {\n height: 100vh;\n}\n\n.max-h-\\[180px\\] {\n max-height: 180px;\n}\n\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n\n.max-h-\\[70px\\] {\n max-height: 70px;\n}\n\n.max-h-\\[90\\%\\] {\n max-height: 90%;\n}\n\n.max-h-\\[90vh\\] {\n max-height: 90vh;\n}\n\n.max-h-screen {\n max-height: 100vh;\n}\n\n.min-h-0 {\n min-height: 0;\n}\n\n.min-h-9 {\n min-height: 2.25rem;\n}\n\n.min-h-\\[20px\\] {\n min-height: 20px;\n}\n\n.min-h-\\[80px\\] {\n min-height: 80px;\n}\n\n.w-1\\/3 {\n width: 33.3333%;\n}\n\n.w-10 {\n width: 2.5rem;\n}\n\n.w-12 {\n width: 3rem;\n}\n\n.w-16 {\n width: 4rem;\n}\n\n.w-2 {\n width: .5rem;\n}\n\n.w-3 {\n width: .75rem;\n}\n\n.w-3\\/4 {\n width: 75%;\n}\n\n.w-4 {\n width: 1rem;\n}\n\n.w-6 {\n width: 1.5rem;\n}\n\n.w-72 {\n width: 18rem;\n}\n\n.w-8 {\n width: 2rem;\n}\n\n.w-\\[100px\\] {\n width: 100px;\n}\n\n.w-\\[16px\\] {\n width: 16px;\n}\n\n.w-\\[24px\\] {\n width: 24px;\n}\n\n.w-\\[334px\\] {\n width: 334px;\n}\n\n.w-\\[36px\\] {\n width: 36px;\n}\n\n.w-\\[400px\\] {\n width: 400px;\n}\n\n.w-\\[42px\\] {\n width: 42px;\n}\n\n.w-\\[45px\\] {\n width: 45px;\n}\n\n.w-\\[54px\\] {\n width: 54px;\n}\n\n.w-\\[70px\\] {\n width: 70px;\n}\n\n.w-\\[72px\\] {\n width: 72px;\n}\n\n.w-\\[8px\\] {\n width: 8px;\n}\n\n.w-auto {\n width: auto;\n}\n\n.w-full {\n width: 100%;\n}\n\n.w-max {\n width: max-content;\n}\n\n.min-w-0 {\n min-width: 0;\n}\n\n.min-w-\\[144px\\] {\n min-width: 144px;\n}\n\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n\n.min-w-full {\n min-width: 100%;\n}\n\n.max-w-\\[315px\\] {\n max-width: 315px;\n}\n\n.max-w-\\[400px\\] {\n max-width: 400px;\n}\n\n.max-w-\\[500px\\] {\n max-width: 500px;\n}\n\n.max-w-\\[70px\\] {\n max-width: 70px;\n}\n\n.max-w-\\[800px\\] {\n max-width: 800px;\n}\n\n.max-w-\\[90\\%\\] {\n max-width: 90%;\n}\n\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n\n.max-w-full {\n max-width: 100%;\n}\n\n.flex-1 {\n flex: 1;\n}\n\n.flex-shrink-0, .shrink-0 {\n flex-shrink: 0;\n}\n\n.flex-grow, .grow {\n flex-grow: 1;\n}\n\n.grow-0 {\n flex-grow: 0;\n}\n\n.basis-full {\n flex-basis: 100%;\n}\n\n.caption-bottom {\n caption-side: bottom;\n}\n\n.border-collapse {\n border-collapse: collapse;\n}\n\n.-translate-x-1\\/2 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: -50%;\n}\n\n.-translate-y-1\\/2 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: -50%;\n}\n\n.translate-x-0 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: 0px;\n}\n\n.translate-x-0\\.5 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: .125rem;\n}\n\n.translate-x-\\[-50\\%\\] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: -50%;\n}\n\n.translate-y-0 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: 0px;\n}\n\n.translate-y-\\[-50\\%\\] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: -50%;\n}\n\n.-scale-x-\\[1\\], .scale-x-\\[-1\\] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-scale-x: -1;\n}\n\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n.animate-pulse {\n animation: 2s cubic-bezier(.4, 0, .6, 1) infinite pulse;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.animate-spin {\n animation: 1s linear infinite spin;\n}\n\n.cursor-default {\n cursor: default;\n}\n\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.select-none {\n -webkit-user-select: none;\n user-select: none;\n}\n\n.resize {\n resize: both;\n}\n\n.appearance-none {\n appearance: none;\n}\n\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-start {\n align-items: flex-start;\n}\n\n.items-end {\n align-items: flex-end;\n}\n\n.items-center {\n align-items: center;\n}\n\n.items-stretch {\n align-items: stretch;\n}\n\n.justify-end {\n justify-content: flex-end;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.justify-between {\n justify-content: space-between;\n}\n\n.gap-0 {\n gap: 0;\n}\n\n.gap-0\\.5 {\n gap: .125rem;\n}\n\n.gap-1 {\n gap: .25rem;\n}\n\n.gap-1\\.5 {\n gap: .375rem;\n}\n\n.gap-12 {\n gap: 3rem;\n}\n\n.gap-2 {\n gap: .5rem;\n}\n\n.gap-2\\.5 {\n gap: .625rem;\n}\n\n.gap-3 {\n gap: .75rem;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.gap-6 {\n gap: 1.5rem;\n}\n\n.gap-8 {\n gap: 2rem;\n}\n\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(.25rem * var(--tw-space-x-reverse));\n margin-left: calc(.25rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n}\n\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.25rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(.375rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-5 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.space-y-6 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n}\n\n.divide-x > :not([hidden]) ~ :not([hidden]) {\n border-right-width: calc(1px * var(--tw-divide-x-reverse));\n border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));\n --tw-divide-x-reverse: 0;\n}\n\n.divide-y > :not([hidden]) ~ :not([hidden]) {\n border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\n --tw-divide-y-reverse: 0;\n}\n\n.divide-gray-200 > :not([hidden]) ~ :not([hidden]) {\n border-color: rgb(var(--color-gray-200) / var(--tw-divide-opacity));\n --tw-divide-opacity: 1;\n}\n\n.self-center {\n align-self: center;\n}\n\n.overflow-auto {\n overflow: auto;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.overflow-visible {\n overflow: visible;\n}\n\n.overflow-y-auto {\n overflow-y: auto;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n\n.truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.whitespace-nowrap {\n white-space: nowrap;\n}\n\n.whitespace-pre-line {\n white-space: pre-line;\n}\n\n.rounded {\n border-radius: .25rem;\n}\n\n.rounded-2xl {\n border-radius: 1rem;\n}\n\n.rounded-\\[10px\\] {\n border-radius: 10px;\n}\n\n.rounded-\\[3px\\] {\n border-radius: 3px;\n}\n\n.rounded-\\[4px\\] {\n border-radius: 4px;\n}\n\n.rounded-\\[6px\\] {\n border-radius: 6px;\n}\n\n.rounded-\\[8px\\] {\n border-radius: 8px;\n}\n\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n\n.rounded-full {\n border-radius: 9999px;\n}\n\n.rounded-lg {\n border-radius: .5rem;\n}\n\n.rounded-md {\n border-radius: .375rem;\n}\n\n.rounded-xl {\n border-radius: .75rem;\n}\n\n.rounded-b-3xl {\n border-bottom-right-radius: 1.5rem;\n border-bottom-left-radius: 1.5rem;\n}\n\n.rounded-t-3xl {\n border-top-left-radius: 1.5rem;\n border-top-right-radius: 1.5rem;\n}\n\n.border {\n border-width: 1px;\n}\n\n.border-2 {\n border-width: 2px;\n}\n\n.border-b {\n border-bottom-width: 1px;\n}\n\n.border-l {\n border-left-width: 1px;\n}\n\n.border-r {\n border-right-width: 1px;\n}\n\n.border-t {\n border-top-width: 1px;\n}\n\n.border-amber-700 {\n border-color: rgb(var(--color-amber-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-blue-700 {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-100 {\n border-color: rgb(var(--color-gray-100) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-1000 {\n border-color: rgb(var(--color-gray-1000) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-200 {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-gray-600 {\n border-color: rgb(var(--color-gray-600) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-red-700 {\n border-color: rgb(var(--color-red-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.border-white\\/10 {\n border-color: #ffffff1a;\n}\n\n.bg-\\[\\#292929\\] {\n background-color: rgb(41 41 41 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-100 {\n background-color: rgb(var(--color-amber-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-200 {\n background-color: rgb(var(--color-amber-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-amber-700 {\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-black\\/25 {\n background-color: #00000040;\n}\n\n.bg-black\\/60 {\n background-color: #0009;\n}\n\n.bg-blue-100 {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-blue-300 {\n background-color: rgb(var(--color-blue-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-blue-700 {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-bronze-300 {\n background-color: rgb(var(--color-bronze-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-100 {\n background-color: rgb(var(--color-brown-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-300 {\n background-color: rgb(var(--color-brown-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-brown-700 {\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-100 {\n background-color: rgb(var(--color-crimson-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-300 {\n background-color: rgb(var(--color-crimson-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-crimson-700 {\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-100 {\n background-color: rgb(var(--color-cyan-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-300 {\n background-color: rgb(var(--color-cyan-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cyan-700 {\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gold-300 {\n background-color: rgb(var(--color-gold-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-grass-300 {\n background-color: rgb(var(--color-grass-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-1000 {\n background-color: rgb(var(--color-gray-1000) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-1000\\/25 {\n background-color: rgb(var(--color-gray-1000) / .25);\n}\n\n.bg-gray-1000\\/80 {\n background-color: rgb(var(--color-gray-1000) / .8);\n}\n\n.bg-gray-200 {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-25 {\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-25\\/50 {\n background-color: rgb(var(--color-gray-25) / .5);\n}\n\n.bg-gray-300 {\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-600 {\n background-color: rgb(var(--color-gray-600) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-gray-900 {\n background-color: rgb(var(--color-gray-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-100 {\n background-color: rgb(var(--color-green-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-300 {\n background-color: rgb(var(--color-green-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-green-700 {\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-indigo-300 {\n background-color: rgb(var(--color-indigo-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-lime-300 {\n background-color: rgb(var(--color-lime-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-orange-100 {\n background-color: rgb(var(--color-orange-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-orange-700 {\n background-color: rgb(var(--color-orange-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-plum-300 {\n background-color: rgb(var(--color-plum-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-purple-300 {\n background-color: rgb(var(--color-purple-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-100 {\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-300 {\n background-color: rgb(var(--color-red-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-700 {\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-red-700\\/60 {\n background-color: rgb(var(--color-red-700) / .6);\n}\n\n.bg-teal-100 {\n background-color: rgb(var(--color-teal-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-teal-300 {\n background-color: rgb(var(--color-teal-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-teal-700 {\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-transparent {\n background-color: #0000;\n}\n\n.bg-violet-100 {\n background-color: rgb(var(--color-violet-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-violet-300 {\n background-color: rgb(var(--color-violet-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-violet-700 {\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-white {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-yellow-300 {\n background-color: rgb(var(--color-yellow-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.bg-cover {\n background-size: cover;\n}\n\n.bg-center {\n background-position: center;\n}\n\n.object-contain {\n object-fit: contain;\n}\n\n.object-cover {\n object-fit: cover;\n}\n\n.p-0 {\n padding: 0;\n}\n\n.p-1 {\n padding: .25rem;\n}\n\n.p-1\\.5 {\n padding: .375rem;\n}\n\n.p-2 {\n padding: .5rem;\n}\n\n.p-2\\.5 {\n padding: .625rem;\n}\n\n.p-3 {\n padding: .75rem;\n}\n\n.p-4 {\n padding: 1rem;\n}\n\n.p-5 {\n padding: 1.25rem;\n}\n\n.p-6 {\n padding: 1.5rem;\n}\n\n.p-8 {\n padding: 2rem;\n}\n\n.p-\\[11px\\] {\n padding: 11px;\n}\n\n.px-2 {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.px-2\\.5 {\n padding-left: .625rem;\n padding-right: .625rem;\n}\n\n.px-3 {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.px-3\\.5 {\n padding-left: .875rem;\n padding-right: .875rem;\n}\n\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.py-0\\.5 {\n padding-top: .125rem;\n padding-bottom: .125rem;\n}\n\n.py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n.py-1\\.5 {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.py-12 {\n padding-top: 3rem;\n padding-bottom: 3rem;\n}\n\n.py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.py-2\\.5 {\n padding-top: .625rem;\n padding-bottom: .625rem;\n}\n\n.py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.pb-2 {\n padding-bottom: .5rem;\n}\n\n.pb-\\[9px\\] {\n padding-bottom: 9px;\n}\n\n.pl-2 {\n padding-left: .5rem;\n}\n\n.pl-4 {\n padding-left: 1rem;\n}\n\n.pr-2 {\n padding-right: .5rem;\n}\n\n.pt-1 {\n padding-top: .25rem;\n}\n\n.pt-10 {\n padding-top: 2.5rem;\n}\n\n.pt-4 {\n padding-top: 1rem;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-center {\n text-align: center;\n}\n\n.align-middle {\n vertical-align: middle;\n}\n\n.text-2xl {\n letter-spacing: -.02em;\n font-size: 24px;\n line-height: 32px;\n}\n\n.text-3xl {\n letter-spacing: -.02em;\n font-size: 30px;\n line-height: 38px;\n}\n\n.text-4xl {\n letter-spacing: -.02em;\n font-size: 36px;\n line-height: 44px;\n}\n\n.text-\\[10px\\] {\n font-size: 10px;\n}\n\n.text-\\[112px\\] {\n font-size: 112px;\n}\n\n.text-\\[30px\\] {\n font-size: 30px;\n}\n\n.text-lg {\n letter-spacing: -.02em;\n font-size: 18px;\n line-height: 22px;\n}\n\n.text-md {\n letter-spacing: -.02em;\n font-size: 16px;\n line-height: 20px;\n}\n\n.text-sm {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.text-xs {\n letter-spacing: -.02em;\n font-size: 12px;\n line-height: 16px;\n}\n\n.font-bold {\n font-weight: 700;\n}\n\n.font-medium {\n font-weight: 500;\n}\n\n.font-normal {\n font-weight: 400;\n}\n\n.font-semibold {\n font-weight: 600;\n}\n\n.leading-none {\n line-height: 1;\n}\n\n.text-\\[\\#707070\\] {\n color: rgb(112 112 112 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-amber-700 {\n color: rgb(var(--color-amber-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-blue-700 {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-bronze-700 {\n color: rgb(var(--color-bronze-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-brown-700 {\n color: rgb(var(--color-brown-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-crimson-700 {\n color: rgb(var(--color-crimson-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-current {\n color: currentColor;\n}\n\n.text-cyan-700 {\n color: rgb(var(--color-cyan-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gold-700 {\n color: rgb(var(--color-gold-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-grass-700 {\n color: rgb(var(--color-grass-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-1000 {\n color: rgb(var(--color-gray-1000) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-400 {\n color: rgb(var(--color-gray-400) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-700 {\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-gray-900 {\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-green-700 {\n color: rgb(var(--color-green-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-indigo-700 {\n color: rgb(var(--color-indigo-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-inherit {\n color: inherit;\n}\n\n.text-lime-700 {\n color: rgb(var(--color-lime-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-orange-700 {\n color: rgb(var(--color-orange-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-plum-700 {\n color: rgb(var(--color-plum-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-primary {\n color: rgb(29 28 32 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-purple-700 {\n color: rgb(var(--color-purple-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-red-700 {\n color: rgb(var(--color-red-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-teal-700 {\n color: rgb(var(--color-teal-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-violet-700 {\n color: rgb(var(--color-violet-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-white {\n color: rgb(255 255 255 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.text-white\\/80 {\n color: #fffc;\n}\n\n.text-yellow-700 {\n color: rgb(var(--color-yellow-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.underline {\n text-decoration-line: underline;\n}\n\n.underline-offset-8 {\n text-underline-offset: 8px;\n}\n\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.opacity-50 {\n opacity: .5;\n}\n\n.shadow-dropdown-sm {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0px 1px 2px 0px #1018280f, 0px 1px 3px 0px #1018281a;\n --tw-shadow-colored: 0px 1px 2px 0px var(--tw-shadow-color), 0px 1px 3px 0px var(--tw-shadow-color);\n}\n\n.shadow-lg {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n}\n\n.shadow-md {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n}\n\n.shadow-sm {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n}\n\n.outline-none {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.outline {\n outline-style: solid;\n}\n\n.ring-1 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-2 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-4 {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-\\[3px\\] {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.ring-inset {\n --tw-ring-inset: inset;\n}\n\n.ring-amber-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-amber-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-300) / var(--tw-ring-opacity));\n}\n\n.ring-blue-700 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.ring-brown-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-brown-300) / var(--tw-ring-opacity));\n}\n\n.ring-crimson-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-crimson-300) / var(--tw-ring-opacity));\n}\n\n.ring-cyan-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-cyan-300) / var(--tw-ring-opacity));\n}\n\n.ring-gray-200 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-200) / var(--tw-ring-opacity));\n}\n\n.ring-green-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-green-300) / var(--tw-ring-opacity));\n}\n\n.ring-orange-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-orange-300) / var(--tw-ring-opacity));\n}\n\n.ring-red-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-300) / var(--tw-ring-opacity));\n}\n\n.ring-teal-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-teal-300) / var(--tw-ring-opacity));\n}\n\n.ring-violet-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-violet-300) / var(--tw-ring-opacity));\n}\n\n.ring-white {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity));\n}\n\n.ring-white\\/20 {\n --tw-ring-color: #fff3;\n}\n\n.ring-offset-0 {\n --tw-ring-offset-width: 0px;\n}\n\n.ring-offset-white {\n --tw-ring-offset-color: #fff;\n}\n\n.blur {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n --tw-blur: blur(8px);\n}\n\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.backdrop-blur-\\[30px\\] {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(30px);\n}\n\n.backdrop-blur-lg {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(16px);\n}\n\n.backdrop-blur-sm {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n --tw-backdrop-blur: blur(4px);\n}\n\n.transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter, backdrop-filter;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-all {\n transition-property: all;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.transition-transform {\n transition-property: transform;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.duration-200 {\n transition-duration: .2s;\n}\n\n.duration-500 {\n transition-duration: .5s;\n}\n\n.duration-700 {\n transition-duration: .7s;\n}\n\n.ease-in-out {\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.ease-linear {\n transition-timing-function: linear;\n}\n\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.will-change-transform {\n will-change: transform;\n}\n\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n\n.animate-in {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.fade-in, .fade-in-0 {\n --tw-enter-opacity: 0;\n}\n\n.fade-out {\n --tw-exit-opacity: 0;\n}\n\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n\n.duration-200 {\n animation-duration: .2s;\n}\n\n.duration-500 {\n animation-duration: .5s;\n}\n\n.duration-700 {\n animation-duration: .7s;\n}\n\n.ease-in-out {\n animation-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.ease-linear {\n animation-timing-function: linear;\n}\n\n.ease-out {\n animation-timing-function: cubic-bezier(0, 0, .2, 1);\n}\n\n.paused {\n animation-play-state: paused;\n}\n\n.inter {\n font-family: Inter, sans-serif;\n}\n\n@supports (font-variation-settings: normal) {\n .inter {\n font-family: Inter var, sans-serif;\n }\n}\n\n.pulse-red-700 {\n animation: 2s infinite pulse-red-700;\n transform: scale(1);\n box-shadow: 0 0 #e5484d;\n}\n\n@keyframes pulse-red-700 {\n 0% {\n transform: scale(.95);\n box-shadow: 0 0 #e5484db3;\n }\n\n 70% {\n transform: scale(1);\n box-shadow: 0 0 0 6px #e5484d00;\n }\n\n 100% {\n transform: scale(.95);\n box-shadow: 0 0 #e5484d00;\n }\n}\n\n.placeholder\\:text-gray-700::placeholder {\n color: rgb(var(--color-gray-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.placeholder\\:text-gray-900::placeholder {\n color: rgb(var(--color-gray-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n\n.focus-within\\:z-20:focus-within {\n z-index: 20;\n}\n\n.focus-within\\:border-gray-200:focus-within {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.focus-within\\:bg-gray-100:focus-within {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.focus-within\\:outline:focus-within {\n outline-style: solid;\n}\n\n.focus-within\\:outline-\\[2px\\]:focus-within {\n outline-width: 2px;\n}\n\n.focus-within\\:outline-offset-\\[2px\\]:focus-within {\n outline-offset: 2px;\n}\n\n.focus-within\\:outline-blue-300:focus-within {\n outline-color: rgb(var(--color-blue-300) / 1);\n}\n\n.focus-within\\:outline-red-700:focus-within {\n outline-color: rgb(var(--color-red-700) / 1);\n}\n\n.hover\\:bg-black\\/10:hover {\n background-color: #0000001a;\n}\n\n.hover\\:bg-blue-100:hover {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-50:hover {\n background-color: rgb(var(--color-blue-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-700:hover {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-blue-800:hover {\n background-color: rgb(var(--color-blue-800) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-100:hover {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-200:hover {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-gray-25\\/60:hover {\n background-color: rgb(var(--color-gray-25) / .6);\n}\n\n.hover\\:bg-gray-50:hover {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-red-100:hover {\n background-color: rgb(var(--color-red-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:bg-red-800:hover {\n background-color: rgb(var(--color-red-800) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.hover\\:text-amber-700:hover {\n color: rgb(var(--color-amber-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.hover\\:text-blue-700:hover {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.hover\\:text-white:hover {\n color: rgb(255 255 255 / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n\n.focus\\:bg-gray-100:focus {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.focus\\:outline-none:focus {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus\\:ring-1:focus {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus\\:ring-2:focus {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n\n.focus-visible\\:outline-none:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.focus-visible\\:ring-2:focus-visible {\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n}\n\n.focus-visible\\:ring-blue-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-blue-300:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-300) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-blue-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-blue-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-gray-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-gray-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-1000:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-1000) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-red-700:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(var(--color-red-700) / var(--tw-ring-opacity));\n}\n\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n\n.active\\:bg-blue-200:active {\n background-color: rgb(var(--color-blue-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-blue-900:active {\n background-color: rgb(var(--color-blue-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-100:active {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-200:active {\n background-color: rgb(var(--color-gray-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-gray-25\\/70:active {\n background-color: rgb(var(--color-gray-25) / .7);\n}\n\n.active\\:bg-gray-500:active {\n background-color: rgb(var(--color-gray-500) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-red-200:active {\n background-color: rgb(var(--color-red-200) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:bg-red-900:active {\n background-color: rgb(var(--color-red-900) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.active\\:text-blue-700:active {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.active\\:text-blue-900:active {\n color: rgb(var(--color-blue-900) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\:select-none:disabled {\n -webkit-user-select: none;\n user-select: none;\n}\n\n.disabled\\:opacity-40:disabled {\n opacity: .4;\n}\n\n.disabled\\:opacity-50:disabled {\n opacity: .5;\n}\n\n.group:focus-within .group-focus-within\\:bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group:hover .group-hover\\:bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group:active .group-active\\:bg-gray-100 {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.peer:hover ~ .peer-hover\\:text-amber-700 {\n color: rgb(var(--color-amber-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: .7;\n}\n\n.aria-selected\\:bg-blue-100[aria-selected=\"true\"] {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.aria-selected\\:text-blue-700[aria-selected=\"true\"] {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=\"bottom\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: .25rem;\n}\n\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=\"left\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: -.25rem;\n}\n\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=\"right\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: .25rem;\n}\n\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=\"top\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: -.25rem;\n}\n\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=\"checked\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: 1.25rem;\n}\n\n.data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=\"cancel\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: 0px;\n}\n\n.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=\"end\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: var(--radix-toast-swipe-end-x);\n}\n\n.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=\"move\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-x: var(--radix-toast-swipe-move-x);\n}\n\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=\"closed\"] {\n animation: .2s ease-out accordion-up;\n}\n\n@keyframes accordion-down {\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=\"open\"] {\n animation: .2s ease-out accordion-down;\n}\n\n.data-\\[disabled\\]\\:cursor-not-allowed[data-disabled] {\n cursor: not-allowed;\n}\n\n.data-\\[state\\=checked\\]\\:border-blue-700[data-state=\"checked\"], .data-\\[state\\=on\\]\\:border-blue-700[data-state=\"on\"] {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.data-\\[disabled\\]\\:data-\\[state\\=unchecked\\]\\:bg-gray-300[data-state=\"unchecked\"][data-disabled] {\n background-color: rgb(var(--color-gray-300) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[selected\\=true\\]\\:bg-gray-50[data-selected=\"true\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-amber-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-amber-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-blue-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-bronze-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-bronze-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-brown-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-brown-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-crimson-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-crimson-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-cyan-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-cyan-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gold-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-gold-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-grass-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-grass-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-gray-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-gray-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-green-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-green-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-indigo-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-indigo-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-lime-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-lime-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-plum-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-plum-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-purple-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-purple-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-red-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-red-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-teal-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-teal-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-violet-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-violet-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[size\\=xxs\\]\\:bg-yellow-700[data-size=\"xxs\"] {\n background-color: rgb(var(--color-yellow-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:bg-white[data-state=\"active\"] {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-blue-700[data-state=\"checked\"] {\n background-color: rgb(var(--color-blue-700) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-gray-50[data-state=\"checked\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=checked\\]\\:bg-white[data-state=\"checked\"] {\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=selected\\]\\:bg-gray-50[data-state=\"selected\"] {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:text-blue-700[data-state=\"active\"] {\n color: rgb(var(--color-blue-700) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.data-\\[state\\=active\\]\\:text-gray-25[data-state=\"active\"] {\n color: rgb(var(--color-gray-25) / var(--tw-text-opacity));\n --tw-text-opacity: 1;\n}\n\n.data-\\[disabled\\]\\:opacity-40[data-disabled] {\n opacity: .4;\n}\n\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: .5;\n}\n\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=\"active\"] {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n --tw-shadow: 0 1px 2px 0 #0000000d;\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n}\n\n.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=\"move\"] {\n transition-property: none;\n}\n\n.data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n transition-duration: .3s;\n}\n\n.data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n transition-duration: .5s;\n}\n\n.data-\\[state\\=open\\]\\:animate-in[data-state=\"open\"] {\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n animation-name: enter;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:animate-out[data-state=\"closed\"], .data-\\[swipe\\=end\\]\\:animate-out[data-swipe=\"end\"] {\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n animation-name: exit;\n animation-duration: .15s;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:fade-out-0[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:fade-out-80[data-state=\"closed\"] {\n --tw-exit-opacity: .8;\n}\n\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n}\n\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n}\n\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=\"open\"] {\n --tw-enter-scale: .95;\n}\n\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=\"bottom\"] {\n --tw-enter-translate-y: -.5rem;\n}\n\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=\"left\"] {\n --tw-enter-translate-x: .5rem;\n}\n\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=\"right\"] {\n --tw-enter-translate-x: -.5rem;\n}\n\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=\"top\"] {\n --tw-enter-translate-y: .5rem;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-bottom[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-bottom-\\[100\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-left[data-state=\"closed\"] {\n --tw-exit-translate-x: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=\"closed\"], .data-\\[state\\=closed\\]\\:slide-out-to-left-\\[50\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-x: -50%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-right[data-state=\"closed\"] {\n --tw-exit-translate-x: 100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-top[data-state=\"closed\"] {\n --tw-exit-translate-y: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=\"closed\"] {\n --tw-exit-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-bottom[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-bottom-\\[100\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-left[data-state=\"open\"] {\n --tw-enter-translate-x: -100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=\"open\"], .data-\\[state\\=open\\]\\:slide-in-from-left-\\[50\\%\\][data-state=\"open\"] {\n --tw-enter-translate-x: -50%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-right[data-state=\"open\"] {\n --tw-enter-translate-x: 100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=\"open\"] {\n --tw-enter-translate-y: -48%;\n}\n\n.data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n}\n\n.data-\\[state\\=closed\\]\\:duration-300[data-state=\"closed\"] {\n animation-duration: .3s;\n}\n\n.data-\\[state\\=open\\]\\:duration-500[data-state=\"open\"] {\n animation-duration: .5s;\n}\n\n.group[data-state=\"open\"] .group-data-\\[state\\=open\\]\\:rotate-180 {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-rotate: 180deg;\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n\n.group[data-state=\"on\"] .group-data-\\[state\\=on\\]\\:border-blue-700 {\n border-color: rgb(var(--color-blue-700) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n}\n\n.group[data-state=\"checked\"] .group-data-\\[state\\=checked\\]\\:bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.group[data-state=\"off\"] .group-data-\\[state\\=off\\]\\:bg-transparent {\n background-color: #0000;\n}\n\n.group[data-state=\"off\"] .group-data-\\[state\\=off\\]\\:text-transparent {\n color: #0000;\n}\n\n.group[data-disabled] .group-data-\\[disabled\\]\\:opacity-50 {\n opacity: .5;\n}\n\n@media not all and (width >= 1024px) {\n .max-lg\\:mt-8 {\n margin-top: 2rem;\n }\n\n .max-lg\\:hidden {\n display: none;\n }\n\n .max-lg\\:h-\\[250px\\] {\n height: 250px;\n }\n\n .max-lg\\:w-full {\n width: 100%;\n }\n\n .max-lg\\:flex-col {\n flex-direction: column;\n }\n}\n\n@media not all and (width >= 640px) {\n .max-sm\\:gap-4 {\n gap: 1rem;\n }\n\n .max-sm\\:p-4 {\n padding: 1rem;\n }\n}\n\n@media (width >= 640px) {\n .sm\\:mt-0 {\n margin-top: 0;\n }\n\n .sm\\:w-1\\/2 {\n width: 50%;\n }\n\n .sm\\:max-w-sm {\n max-width: 24rem;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:flex-col {\n flex-direction: column;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:justify-center {\n justify-content: center;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(.5rem * var(--tw-space-x-reverse));\n margin-left: calc(.5rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n --tw-space-x-reverse: 0;\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n --tw-space-y-reverse: 0;\n }\n\n .data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n}\n\n@media (width >= 768px) {\n .md\\:block {\n display: block;\n }\n\n .md\\:h-\\[550px\\] {\n height: 550px;\n }\n\n .md\\:w-\\[1000px\\] {\n width: 1000px;\n }\n\n .md\\:w-\\[300px\\] {\n width: 300px;\n }\n\n .md\\:w-\\[334px\\] {\n width: 334px;\n }\n\n .md\\:w-\\[500px\\] {\n width: 500px;\n }\n\n .md\\:w-auto {\n width: auto;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:w-screen {\n width: 100vw;\n }\n\n .md\\:max-w-\\[420px\\] {\n max-width: 420px;\n }\n\n .md\\:max-w-\\[90vw\\] {\n max-width: 90vw;\n }\n\n .md\\:flex-row {\n flex-direction: row;\n }\n\n .md\\:items-center {\n align-items: center;\n }\n\n .md\\:justify-start {\n justify-content: flex-start;\n }\n\n .md\\:gap-0 {\n gap: 0;\n }\n\n .md\\:gap-4 {\n gap: 1rem;\n }\n\n .md\\:gap-8 {\n gap: 2rem;\n }\n\n .md\\:divide-y > :not([hidden]) ~ :not([hidden]) {\n border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\n --tw-divide-y-reverse: 0;\n }\n\n .md\\:border-0 {\n border-width: 0;\n }\n\n .md\\:bg-gray-50 {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n }\n\n .md\\:bg-transparent {\n background-color: #0000;\n }\n\n .md\\:p-0 {\n padding: 0;\n }\n\n .md\\:p-4 {\n padding: 1rem;\n }\n\n .md\\:p-6 {\n padding: 1.5rem;\n }\n\n .md\\:p-8 {\n padding: 2rem;\n }\n\n .md\\:pt-4 {\n padding-top: 1rem;\n }\n}\n\n@media (width >= 1024px) {\n .lg\\:flex-col {\n flex-direction: column;\n }\n\n .lg\\:items-center {\n align-items: center;\n }\n\n .lg\\:gap-2 {\n gap: .5rem;\n }\n\n .lg\\:gap-8 {\n gap: 2rem;\n }\n\n .lg\\:rounded-lg {\n border-radius: .5rem;\n }\n\n .lg\\:border {\n border-width: 1px;\n }\n\n .lg\\:border-gray-200 {\n border-color: rgb(var(--color-gray-200) / var(--tw-border-opacity));\n --tw-border-opacity: 1;\n }\n\n .lg\\:bg-pattern {\n background-image: radial-gradient(50% 50%, #006aff33 0%, #006aff00 100%), linear-gradient(#0000 0%, #fff 100%), linear-gradient(0deg, #0000 0%, #ffffffbf 100%), url(\"data:image/svg+xml,%3Csvg width='40' height='40' viewBox='0 0 40 40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M40 40V41H41V40H40ZM39 0V40H41V0H39ZM40 39H0V41H40V39Z' fill='%23E8E8E8' mask='url(%23path-1-inside-1_124_242)'/%3E%3C/svg%3E\");\n }\n\n .lg\\:p-6 {\n padding: 1.5rem;\n }\n\n .lg\\:text-center {\n text-align: center;\n }\n\n .lg\\:text-4xl {\n letter-spacing: -.02em;\n font-size: 36px;\n line-height: 44px;\n }\n}\n\n@media (width >= 1280px) {\n .xl\\:rounded-none {\n border-radius: 0;\n }\n}\n\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-blue-100:has([aria-selected]) {\n background-color: rgb(var(--color-blue-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: .375rem;\n border-bottom-left-radius: .375rem;\n}\n\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: .375rem;\n border-bottom-right-radius: .375rem;\n}\n\n.\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=\"checkbox\"]) {\n padding-right: 0;\n}\n\n.\\[\\&\\:not\\(\\[aria-selected\\]\\)\\]\\:hover\\:bg-gray-100:hover:not([aria-selected]) {\n background-color: rgb(var(--color-gray-100) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&\\>\\*\\]\\:fill-white > * {\n fill: #fff;\n}\n\n.\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] > [role=\"checkbox\"] {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-translate-y: 2px;\n}\n\n.\\[\\&\\>svg\\]\\:h-4 > svg {\n height: 1rem;\n}\n\n.\\[\\&\\>svg\\]\\:w-auto > svg {\n width: auto;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: .375rem;\n padding-bottom: .375rem;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-sm [cmdk-group-heading] {\n letter-spacing: -.02em;\n font-size: 14px;\n line-height: 20px;\n}\n\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n\n.\\[\\&_tr\\:active\\]\\:bg-gray-50 tr:active, .\\[\\&_tr\\:hover\\:active\\]\\:bg-gray-50 tr:hover:active {\n background-color: rgb(var(--color-gray-50) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&_tr\\:hover\\]\\:bg-gray-25 tr:hover {\n background-color: rgb(var(--color-gray-25) / var(--tw-bg-opacity));\n --tw-bg-opacity: 1;\n}\n\n.\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child {\n border-width: 0;\n}\n\n.\\[\\&_tr\\]\\:border-b tr {\n border-bottom-width: 1px;\n}\n";
14731
15051
 
14732
15052
 
14733
15053
  var $9554d945ad3f220e$exports = {};
@@ -14739,6 +15059,7 @@ $e02c50a47b475960$exports = "*, :before, :after {\n box-sizing: border-box;\n
14739
15059
 
14740
15060
 
14741
15061
  const $24075a5d702d64b3$var$browser = (0, $3Sbms$bowser).parse(window.navigator.userAgent);
15062
+ const $24075a5d702d64b3$var$queryClient = new (0, $3Sbms$QueryClient)();
14742
15063
  const $24075a5d702d64b3$var$defaultOptions = {
14743
15064
  headless: false,
14744
15065
  recorder: {
@@ -14835,8 +15156,11 @@ const $24075a5d702d64b3$export$3f94917203ab7078 = {
14835
15156
  rel: "stylesheet",
14836
15157
  href: "https://rsms.me/inter/inter.css"
14837
15158
  }),
14838
- /*#__PURE__*/ (0, $3Sbms$jsx)((0, $26ed036cbc17809a$export$2e2bcd8739ae039), {
14839
- options: mergedOptions
15159
+ /*#__PURE__*/ (0, $3Sbms$jsx)((0, $3Sbms$QueryClientProvider), {
15160
+ client: $24075a5d702d64b3$var$queryClient,
15161
+ children: /*#__PURE__*/ (0, $3Sbms$jsx)((0, $26ed036cbc17809a$export$2e2bcd8739ae039), {
15162
+ options: mergedOptions
15163
+ })
14840
15164
  })
14841
15165
  ]
14842
15166
  }));