PageSourceSearch

https://s3-static.escapadarural.com/assets_nuxt_01/_nuxt/-lRF3DUq.js

js escapadarural.com collected 2026-10-01 11:30:28 UTC 174,766 bytes, 2 lines download raw bytes

1(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{};e.SENTRY_RELEASE={id:`ef9009a4`};var t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`4088b115-bddd-41f8-a45b-572df10a6f0e`,e._sentryDebugIdIdentifier=`sentry-dbid-4088b115-bddd-41f8-a45b-572df10a6f0e`)}catch{}})();var e={common:{yes:`Sí`,no:`No`},time:{hours:`hora | horas`,days:`día | días`,weeks:`semana | semanas`},range:{under:`menos`,above:`más`},lang:{connectors:{addition:`y`}},head:{schema:{lodgingBusiness:{price:`Precio medio {price}`}}},form:{optional:`(opcional)`,mandatory:`(obligatorio)`,eur:`EUR`,percent:`%`},accessibility:{skipLink:`Salto al contenido principal`,menuOpen:`Abrir menú`,menuClose:`Cerrar menú`,userMenu:`Menú de usuario`},"internal-emails":{lead:{subject:`Nuevo Lead - Aumenta tus reservas`,title:`Has recibido un nuevo lead a través del formulario de 'Aumenta tus reservas'. Aquí tienes los datos del contacto:`,name:`Nombre:`,email:`E-mail:`,phone:`Teléfono:`},capta:{subject:`Nuevo Lead B2B Funnel`,title:`Has recibido un nuevo lead a través del formulario de 'B2B Funnel'. Aquí tienes los datos del contacto:`,name:`Nombre:`,email:`E-mail:`,phone:`Teléfono:`}},auth:{register:{title:`Regístrate y empieza a disfrutar del turismo rural`,name:`Nombre`,"name-title":`Introduce tu nombre`,surnames:`Apellidos`,"surnames-title":`Introduce tus apellidos`,phone:`Teléfono`,"phone-title":`Introduce tu número de teléfono`,province:`Provincia`,"province-title":`Selecciona tu provincia`,email:`E-mail`,"email-title":`Introduce tu e-mail`,emailConfirm:`Confirma tu e-mail`,"emailConfirm-title":`Confirma tu e-mail`,password:`Contraseña`,"password-title":`Introduce tu contraseña`,allowComms:`Consiento recibir comunicaciones comerciales de EscapadaRural sobre sus servicios de promoción de alojamientos rurales por correo electrónico y/o teléfono, incluidas recomendaciones personalizadas elaboradas a partir de mi actividad en la plataforma.`,privacyPolicy:`He leído y acepto las <a href="https://www.escapadarural.com/static/pages/terms" rel="nofollow" target="_blank">Condiciones de uso</a> y la <a href="https://www.escapadarural.com/static/pages/privacy" id="politica_privacidad" rel="nofollow" target="_blank">Política de privacidad</a>.`,submit:`Registrarme`,goToLogin:`Si ya tienes cuenta {action}`,loginText:`inicia sesión`},"register-optin":{errorLoad:`Ha habido un error. Prueba otra vez recargando la página.`,title:`Suscríbete y aprovecha todos los beneficios de EscapadaRural`,email:`E-mail`,"email-title":`Introduce tu e-mail`,emailConfirm:`Confirma tu e-mail`,"emailConfirm-title":`Confirma tu e-mail`,name:`Nombre`,"name-title":`Introduce tu nombre`,surnames:`Apellidos`,"surnames-title":`Introduce tus apellidos`,phone:`Teléfono`,"phone-title":`Introduce tu número de teléfono`,province:`Provincia`,"province-title":`Selecciona tu provincia`,conditions:`Al suscribirme, he leído y acepto la {privacyPolicy} y el {useConditions}, sabiendo que la suscripción me da acceso como usuario de EscapadaRural y recibiré sus comunicaciones a mi correo electrónico.`,useConditions:`Aviso legal`,privacyPolicy:`Política de privacidad`,submit:`Suscribirme`,success:{title:`¡Alta de comunicaciones completada!`,text:`Ahora recibirás en tu e-mail contenidos exclusivos, ofertas y planes personalizados para tu escapada.`,button:`Seguir navegando`}},header:{loginText:`Inicia sesión o regístrate`,cottageRegistrationText:`Publica tu alojamiento`},confirmation:{label:`He leído y acepto las {useConditions} y la {privacyPolicy}.`,useConditions:`condiciones de uso`,privacyPolicy:`política de privacidad`,useConditionsUrl:`/aviso-legal`,privacyPolicyUrl:`/politica-privacidad`},registrationOwner:{label:`Si ya estás registrado, {signUp}.`,signUp:`inicia sesión`,alternative:`O también puedes:`,return:`Empezar de nuevo`,email:{button:`Continuar con e-mail`,title:`Completa tu registro con e-mail`},google:{button:`Continuar con Google`,title:`Completa tu registro con Google`}},registrationTraveler:{label:`Si ya estás registrado, {signUp}.`,signUp:`inicia sesión`,alternative:`O también puedes:`,return:`Empezar de nuevo`,email:{button:`Continuar con e-mail`,t
1itle:`Completa tu registro con e-mail`},google:{button:`Continuar con Google`,title:`Completa tu registro con Google`}},login:{title:`Inicia sesión y disfruta del turismo rural`,separator:`o continuar con e-mail:`,"label-separator":`o`,label:`Si aún no tienes una cuenta, {register}.`,label2:`Publica tu alojamiento`,register:`¡regístrate!`,email:{email:`E-mail`,"mail-title":`Introduce tu e-mail`,password:`Contraseña`,"password-title":`Introduce tu contraseña`,"password-forgot":`¿Olvidaste la contraseña?`,"password-forgot-label":`Recupera tu contraseña`,submit:`Iniciar sesión`},google:{button:`Continuar con Google`,"no-account":`No encontramos ninguna cuenta asociada a este Google. {register}.`,register:`¡Regístrate!`}},"login-owner":{title:`Iniciar sesión`,"no-account":`Si aún no tienes una cuenta:`,register:`¡regístrate y publica tu alojamiento!`}},components:{tExpandable:{showMore:`Mostrar más`,showLess:`Mostrar menos`},stars:{comments:`{n} opinión | {n} opiniones`},reviews:{viewFullReview:`Ver opinión completa`},search:{query:`¿Dónde quieres ir?`,"query-title":`Introduce donde quieres ir`,notFound:`no encontrada`,noResults:`Sin resultados`,dates:`Entrada - Salida`,"dates-title":`Selecciona fechas de entrada y salida`,withoutdates:`Borrar fechas`,capacity:`Personas`,"capacity-title":`Selecciona número de personas`,submit:`Buscar`,datesMandatory:`Las fechas de Entrada y Salida son obligatorias`,verifiedCalendar:`Calendario verificado`,verifiedCalendarText:`Este calendario sincroniza la disponibilidad en tiempo real para asegurar que las fechas estén libres.`},deal:{percentage:`-{n}% descuento`,nights:`{n} noche: | {n} noches:`,dates:`del {dateIn} al {dateOut}`,people:`{n} persona | {n} personas`,pricePersonNight:`({pricePersonNight} pers./noche)`,total:`Ahora {total}`,totalOld:`/ antes {totalOld}`,open:`Ocultar detalle oferta`,close:`Ver detalle oferta`,whatIncludes:`La oferta incluye: `,button:`Solicitar oferta`},"blog-post":{readingTime:`de lectura`},"cancelation-policy":{labels:{freeCancellation:`Cancelación gratuita.`,partialRefund:`Devolución parcial.`,noRefund:`Sin devolución.`},titles:{before:`Antes del {date}`,after:`Después del {date}`,checkIn:`{date}`},descriptionsTraveler:{noRefundAfter:`Si cancelas después del {date} a las {time}, no obtendrás ninguna devolución.`,checkInDate:`Entrada alojamiento.`,fullRefund:`Si cancelas la reserva antes del {date} a las 23:59, recibirás la devolución del 100% del importe pagado.`,fullRefundWithPrice:`Si cancelas la reserva antes del {date} a las 23:59, recibirás la devolución del 100% ({amount}) del importe pagado.`,partialRefund:`Si cancelas la reserva antes del {date} a las 23:59, recibirás una devolución del {percent}% del importe pagado.`,partialRefundWithPrice:`Si cancelas la reserva antes del {date} a las 23:59, recibirás una devolución de {percent}% ({amount}) del importe pagado.`},descriptionsOwner:{fullRefundWithPrice:`Si la persona viajera cancela la reserva antes del {date} a las 23:59, recibirá la devolución del 100% ({amount}) del importe pagado.`,partialRefundWithPrice:`Si la persona viajera cancela la reserva antes del {date} a las 23:59, recibirá una devolución de {percent}% ({amount}) del importe pagado.`,noRefundAfter:`Si la persona viajera cancela después del {date} a las 23:59, no obtendrá ninguna devolución.`},viewFullPolicy:`Ver política completa`,fullPolicyTitle:`Política de cancelación`}},messages:{whatsapp:{meta:{title:`Mensaje Whatsapp`},info:{disclaimer:`El mensaje del viajero puede no coindicir con el mensaje recibido en tu móvil.`},detail:{title:`Whatsapp para`},labels:{traveler:`Viajero`,phone:`Teléfono`,accommodation:`Alojamiento`,date:`Fecha`},pagination:{label:`Mostrando del <b>{start}</b> al <b>{end}</b> de <b>{total}</b> resultados`,next:`Siguientes`,prev:`Anteriores`},error:{title:`Algo no ha ido bien`,text:`Los datos no se han cargado. Por favor, actualiza la página y vuelve a intentarlo`}}},menu:{breadcrumb:{breadcrumb:`Ruta de navegación`,home:`Inicio`,cottages:`Casas Rurales`,contact:`Contactar`,"most-wanted":`Lo más buscado`,"summer-
1outing":`Escapadas de verano`,holidays:`Vacaciones`,villages:`Pueblos`,escapadas:`Escapadas`,"legal-info":`Condiciones de uso`,accessibility:`Accesibilidad`,"privacy-policy":`Política de privacidad de EscapadaRural.com`,"register-owner":`Registro de Propietario`,"register-traveler":`Registro Viajero`,"register-traveler-optin":`Alta comunicaciones`,login:`Inicia sesión`},menu:{home:`Inicio`,cottages:`Casas Rurales`,guides:`Guías`,deals:`Ofertas`,inspiration:`Magazine`,contact:`Contacto`,villages:`Pueblos`,mostWanted:`Lo más buscado`},user_menu:{profile:`Tu perfil`,change_to_traveler:`Cambiar a viajero`,close_session:`Cerrar sesión`},share_menu:{button_aria:`Compartir en redes`,title:`Comparte con amigos y familiares`,copy:{title:`Copiar enlace`,copiedText:`Enlace copiado`},whatsapp:{title:`Whatsapp`}},private_calendar_menu:{calendar:`Calendario`,platforms:`Sincronizar calendarios`},private_cottages_menu:{summary:`Resumen`,legal:`Legal`,prices:`Precios`,conditions:`Condiciones`,description:`Descripción`,characteristics:`Características`,map:`Mapa`,photos:`Fotos`,videos:`Vídeos`},private_owner_accommodation_menu:{fichas:`Fichas`,temporadas:`Temporadas`,oferta:`Oferta`,opiniones:`Opiniones`,extras:`Extras`,herramientasWeb:`Herramientas web`},private_services_menu:{services:`Servicios contratados`,legal_info:`Datos fiscales`,invoices:`Facturas`,dac7:`Declaración de reservas`},private_online_booking_config_menu:{settings:`Plataforma de pago`,cottages:`Modalidad de reserva`},private_menu:{bookings:`Reservas`,outings:`Mis escapadas`,messages:`Mensajes`,favourites:`Favoritos`,opinions:`Opiniones`,calendar:`Calendario`,accommodations:`Alojamientos`,payment_platform:`Reserva online`,premium_services:`Servicios Premium`,webpage:`Tu página web`,phone:`932 458 353`,adminPortal:`Portal Admin.`,helpCenter:`Centro de ayuda`,helpCenterWhatsapp:`Escríbenos`,helpCenterWhatsappMessage:`Hola, mi id de propietario es {id}, necesito ayuda con:`},footer_menu:{about_us:{title:`Nosotros`,about_us:`Sobre nosotros`,press:`Notas de prensa`,observatory:`Observatorio turismo rural`,corporative_blog:`Blog corporativo`,contact:`Contactar`,how_platform_works:`Cómo funciona la plataforma`},owners:{title:`Propietarios`,highlight_cottage:`Aumenta tus reservas`,advices:`Consejos`},travelers:{title:`Viajeros`,mostWanted:`Lo más buscado`,holidays:`Vacaciones`,getaway:`Escapadas`},legal:{title:`Legal`,conditions:`Condiciones de uso`,privacy:`Privacidad`,cookies:`Cookies`,accessibility:`Accesibilidad`},group:{title:`El grupo`,hometogo:`Hometogo`,wimdu:`Wimdu`,casamundo:`Casamundo`}},footer_social_menu:{title:`Síguenos`},footer_apps_menu:{app:{title:`App`}},logo_back_menu:{home:`Casas rurales en EscapadaRural.com`},back_button:{text:`Volver`,aria:`Volver a la página anterior`}},owner:JSON.parse(`{"online-booking":{"dsa":{"title":"Certificación de compromiso (actualización 2024)","checkbox":{"description":"Con motivo de mi adhesión al servicio de reserva online, ofrecido por EscapadaRural servicios para propietarios S.L.U. certifico que me comprometo a ofrecer los servicios de mi alojamiento cumpliendo todas las disposiciones aplicable del Derecho de la Unión.","moreInfo":"Más información"},"submit-button":"Guardar"},"cancel":{"title":"Cancelar reserva","alert":{"title":"Cancelar una reserva confirmada es un incumplimiento grave.","description":"Al cancelar, se te aplicará la comisión sobre el total de la reserva y se efectuará el reembolso al viajero."},"booking":{"reference":"Referencia:","accommodation":"Alojamiento:","total":"Total reserva:","commission":"Importe comisión:"},"form":{"reasonLegend":"Motivos de la cancelación:","otherReasonPlaceholder":"Escribe aquí el motivo para nuestro equipo (no se envía a la persona viajera)...","otherReasonDescription":"(motivo solo para control interno. No se enviará a la persona viajera.)","travelerReasonLabel":"Explícale al viajero por qué cancelas su reserva:","travelerReasonPlaceholder":"Cuéntaselo aquí"},"buttons":{"submit":"Cancelar reserva","previous":"Anterior","next":"Siguiente"},"steps":{"reasons":"Motivos cancelación","message":"Mensaje al viajero"}},"reject":{"title":"Rechazar reserva","alert":{"title":"Impacto en la visibilidad de tu anuncio.","description":"Al rechazar, tu tasa de aceptación empeora y afecta a la visibilidad de tu anuncio en los resultados de búsqueda."},"booking":{"reference":"Referencia:","accommodation":"Alojamiento:","total":"Total reserva:","commission":"Importe comisión:"},"form":{"reasonLegend":"Motivos de rechazo:","otherReasonPlaceholder":"Escribe aquí el motivo para nuestro equipo (no se envía a la persona viajera)...","otherReasonDescription":"(motivo solo para control interno. No se enviará a la persona viajera.)","travelerReasonLabel":"Explícale al viajero por qué rechazas su reserva:","travelerReasonPlaceholder":"Cuéntaselo aquí"},"buttons":{"submit":"Rechazar reserva","previous":"Anterior","next":"Siguiente"},"steps":{"reasons":"Motivos de rechazo","message":"Mensaje al viajero"}},"confirm":{"title":"Confirmar reserva","loading":"Confirmando reserva...","success":{"title":"¡Reserva confirmada!","description":"Has confirmado tu reserva con EscapadaRural. Las fechas quedarán bloqueadas y envi
1aremos una confirmación de reserva al viajero.","status":{"label":"Estado:","value":"Reserva confirmada"},"button":"Ver la reserva"},"nonPending":{"title":"Esta reserva ya no está pendiente de confirmación","description":{"text":"{title} Consulta su estado actual a continuación.","title":"Esta reserva ya no se puede confirmar."},"button":"Ver la reserva"}},"config":{"cottages":{"title":"Confirmación de Reserva online (manual / inmediata)","subtitle":"De ahora en adelante, el modo Manual será la opción predeterminada para tus nuevos alojamientos. Si necesitas cambiarlo, selecciona los espacios que desees y elige la nueva modalidad.","popover":{"text1":{"title":"⚡ Inmediata","description":"{title}: Permitir que los viajeros reserven automáticamente"},"text2":{"title":"🕒 Manual","description":"{title}: Tendrás que revisar las solicitudes de reserva que recibas en un plazo de 24h."}},"changeToManual":"Cambiar a manual","changeToImmediate":"Cambiar a inmediata","preference":{"name":"Modalidad:","manual":"Manual","immediate":"Inmediata"},"preferenceIcon":{"manual":"🕒","immediate":"⚡"},"filterByName":"Filtrar por nombre...","ally":{"selectAll":"Seleccionar todo","selectRow":"Seleccionar fila"},"header":{"name":"Nombre","preference":"Modalidad"},"selectedCount":"{selected} de {total} alojamiento(s) seleccionados","modal":{"title":"¿Confirmar cambios para {n} alojamiento? | ¿Confirmar cambios para {n} alojamientos?","immediateText":"Vas a activar la {bold}. Esto significa que los viajeros podrán reservar tus espacios al instante sin esperar tu aprobación manual.","immediateTextBold":"Reserva Inmediata ⚡️","manualText":"Vas a activar la {bold}. Esto significa que tendrás que revisar las solicitudes de reserva que recibas en un plazo de 24 horas. Rechazar o cancelar solicitudes puede afectar a tu posicionamiento.","manualTextBold":"Reserva Manual 🕒","checkboxImmediate":"Entiendo que debo mantener mi calendario actualizado para evitar cancelaciones.","checkboxManual":"Entiendo que debo mantener mi calendario actualizado para evitar rechazos de solicitudes de reserva.","cancel":"Cancelar","confirm":"Aplicar cambios","success":"Cambios realizados correctamente","error":"Algo no ha ido bien, por favor, vuelve a intentarlo.","back":"Volver"}}}},"taxData":{"meta":{"title":"Declaración de reservas"},"moreInfo":"Para más información sobre la normativa de la Unión Europea DAC7 consulta { action }","dacArticle":"este artículo","contact":{"subject":"Aviso generado desde EscapadaRural - Deseo cambiar mis datos fiscales","body":"Hola, mi id de propietario es el {ownerId} y deseo cambiar los siguientes datos fiscales: \\n[introduce aquí los datos que deseas cambiar o la información que creas relevante para nuestro departamento de administración. Indica además otros datos que nos ayuden a identificarte como el nombre de tus alojamiento o el e-mail que usas en EscapadaRural]"},"dacTitleInfo":"Para cumplir con la normativa de la UE DAC7 tienes que confirmar obligatoriamente que los datos de abajo s
1on correctos y verídicos.","dactDescInfo":"Para ello, selecciona \\"Modificar datos\\", activa el campo obligatorio que hay al final del formulario marcado en rojo y guarda los cambios.","nifTitleInfo":"DNI no entregado","nifDescInfo":"Sube una copia de tu DNI. Procesaremos tu documentación en los próximos días.","nifLink":"Subir DNI","cifTitleInfo":"NIF no entregado","cifDescInfo":"Sube una copia de tu NIF de empresa. Procesaremos tu documentación en los próximos días.","cifLink":"Subir NIF","legalIndividual":{"modifyDataInfo":"Para modificar los datos de carácter personal (nombre, apellidos, NIF y Nº de identificación IVA) { action }.","contactUs":"contacta con nosotros","title":"Tus datos fiscales","subtitle":"Declara que los siguientes datos son correctos. Si han cambiado, introduce los nuevos y guarda los cambios realizados.","subtitleEdit":"Declara que los siguientes datos son correctos. Si han cambiado, introduce los nuevos y guarda los cambios realizados.","firstName":"Nombre","lastName":"Apellidos","address":"Dirección principal","village":"Pueblo/Ciudad","province":"Provincia","zip":"Código postal","country":"País","selectCountry":"Selecciona un país","nif":"DNI","nifPhoto":"Documento del DNI","nifPhotoPending":"No entregado ","nifPhotoDone":"Entregado ","cif":"NIF","cifPhoto":"Documento del NIF","cifPhotoPending":"No entregado ","cifPhotoDone":"Entregado ","vat_id":"Nº de identificación IVA","birthDate":"Fecha de nacimiento","confirmation":"Declaro que todos y cada uno de los datos son correctos y verídicos","mandatory":"campo obligatorio"},"legalEntity":{"modifyDataInfo":"Para modificar los datos de carácter personal (razón social, NIF y Nº de identificación IVA) { action }.","contactUs":"contacta con nosotros","title":"Tus datos fiscales","subtitle":"Declara que los siguientes datos son correctos. Si han cambiado, introduce los nuevos y guarda los cambios realizados.","subtitleEdit":"Declara que los siguientes datos son correctos. Si han cambiado, introduce los nuevos y guarda los cambios realizados.","name":"Razón social","address":"Dirección principal","village":"Pueblo/Ciudad","province":"Provincia","zip":"Código postal","country":"País","selectCountry":"Selecciona un país","nif":"NIF","vat_id":"Nº de identificación IVA","companyRegister":"Número de registro de la empresa","confirmation":"Declaro que todos y cada uno de los datos son correctos y verídicos","mandatory":"campo obligatorio"},"edit":{"editButton":"Modificar datos","cancel":"Cancelar","save":"Guardar","successTitle":"Cambios recibidos. Los datos modificados serán visibles en unos minutos.","errorTitle":"Algo no ha ido bien, por favor, vuelve a intentarlo."}},"invoices":{"filter":"Filtrar por","title":"Informe DAC7","subtitle":"Reservas online declaradas el año siguiente de su fecha de facturación.","fields":{"date":"Fecha factura","documentId":"Nº factura","bookingId":"Nº reserva","value":"Valor generado","fee":"Comisión (sin imp.)"},"error":{"title":"No tienes reservas online facturadas en { year }"}},"calendar":{"avaibook":{"authorize":{"title":"Vincula AvaiBook","text":"Para comenzar a utilizar tu disponibilidad en AvaiBook, primero debes vincular tu usuario de EscapadaRural con el de AvaiBook. Haz clic en el botón para autorizar la conexión y sigue las instrucciones.","button":"Vincular AvaiBook"},"noAuthorized":{"title":"Vincula AvaiBook","text":"Vincular tus calendarios es una funcionalidad del servicio premium. Contacta con tu comercial para más información.","link":"Servicio premium"},"link":{"title":"Vincula AvaiBook","text":"Selecciona el alojamiento y unidad de alquiler de EscapadaRural y vincula el espacio correspondiente en AvaiBook.","notCompatibilityAdvice":"Cada unidad de alquiler sólo puede estar vinculada con un calendario externo. Al vincular este channel a una unidad de alquiler, cualquier vinculación anterior con otro channel o con iCal será eliminada, así como la ocupación previamente importada.","selectER":{"label":"Unidad de alquiler en EscapadaRural","placeholder":"Selecciona unidad de alquiler"},"selectAvaiBook":{"label":"Espacio en AvaiBook","placeholder":"Selecciona espacio"},"button":{"link":"Vincular"},"textSuccess":"{0} vinculado en AvaiBook correctamante.","errorLinkGetData":"Algo ha fallado al buscar tus espacios en AvaiBook, inténtalo más tarde.","errorLink":"No hemos podido vincular este espacio con AvaiBook, inténtalo más tarde.","errorAction":"Infórmanos de la incidencia"},"unlink":{"title":"Calendarios vinculados con AvaiBook","columnER":{"heading":"Unidad de alquiler en EscapadaRural","label":"EscapadaRural"},"columnAvaiBook":{"heading":"Espacio en AvaiBook","label":"AvaiBook"},"errorUnlinkGetData":"Algo ha fallado al buscar tus espacios vinculados con AvaiBook , inténtalo más tarde.","errorUnlink":"No hemos podido desvincular este espacio con AvaiBook, inténtalo más tarde.","errorUnlinkAction":"Infórmanos de la incidencia"},"modal":{"title":"Desvincular calendario AvaiBook","text":"¿Estás seguro que quieres desvincular el espacio en AvaiBook? Dejarás de sincronizar tus reservas.","buttonCancel":"Cancelar","buttonUnlink":"Desvincular"}},"misterplan":{"authorize":{"title":"Vincula MisterPlan","text":"Para comenzar a utilizar tu disponibilidad en MisterPlan, primero debes vincular tu usuario de EscapadaRural con el de MisterPlan. Haz clic en el botón para autorizar la conexión y sigue las instrucciones.","button":"Vincular MisterPlan"},"noAuthorized":{"title":"Vincula MisterPlan","text":"Vincular tus calendarios es una funcionalidad del servicio premium. Contacta con tu comercial para más información.","link":"Servicio premium"},"link":{"title":"Vincula MisterPlan","text":"Selecciona el alojamiento y unidad de alquiler de EscapadaRural y vincula el espacio correspondiente en MisterPlan.","notCompatibilityAdvice"
1:"Cada unidad de alquiler sólo puede estar vinculada con un calendario externo. Al vincular este channel a una unidad de alquiler, cualquier vinculación anterior con otro channel o con iCal será eliminada, así como la ocupación previamente importada.","selectER":{"label":"Unidad de alquiler en EscapadaRural","placeholder":"Selecciona unidad de alquiler"},"selectMisterPlan":{"label":"Espacio en MisterPlan","placeholder":"Selecciona espacio"},"button":{"link":"Vincular"},"textSuccess":"{0} vinculado en MisterPlan correctamante.","errorLinkGetData":"Algo ha fallado al buscar tus espacios en MisterPlan, inténtalo más tarde.","errorLink":"No hemos podido vincular este espacio con MisterPlan, inténtalo más tarde.","errorAction":"Infórmanos de la incidencia"},"unlink":{"title":"Calendarios vinculados con MisterPlan","columnER":{"heading":"Unidad de alquiler en EscapadaRural","label":"EscapadaRural"},"columnMisterPlan":{"heading":"Espacio en MisterPlan","label":"MisterPlan"},"errorUnlinkGetData":"Algo ha fallado al buscar tus espacios vinculados con MisterPlan, inténtalo más tarde.","errorUnlink":"No hemos podido desvincular este espacio con MisterPlan, inténtalo más tarde.","errorUnlinkAction":"Infórmanos de la incidencia"},"modal":{"title":"Desvincular calendario MisterPlan","text":"¿Estás seguro que quieres desvincular el espacio en MisterPlan? Dejarás de sincronizar tus reservas.","buttonCancel":"Cancelar","buttonUnlink":"Desvincular"}},"ical":{"meta":{"title":"Vincula iCal"},"notPremium":{"title":"Vincula iCal de otras plataformas","text":"Vincular tus calendarios es una funcionalidad del Servicio Premium. Contacta con tu comercial para más información.","link":"Servicio premium"},"hasOtherChannel":"Vincular este channel reemplazará cualquier calendario previo y eliminará la ocupación importada.","new":{"title":"Vincula iCal de otras plataformas","text":"Copia la URL de tu calendario externo con el formato iCal y pégalo aquí. Añade un nombre para identificarlo más fácilmente.","url":{"label":"iCal URL","title":"Añade la url con formato ical"},"name":{"label":"Nombre del calendario","title":"Añade un nombre al calendario para identificarlo más fácilmente"},"button":{"save":"Guardar"}},"import":{"title":"Vincular iCal de otras plataformas","text":"Puedes sincronizar los calendarios iCal que quieras. Selecciona alojamiento y unidad de alquiler que quieras ver.","cottage":{"label":"Alojamiento","placeholder":"Selecciona alojamiento"},"rentUnit":{"label":"Unidad de alquiler","placeholder":"Selecciona unidad de alquiler"},"button":{"link":"Vincular"},"textSuccess":"{0} vinculado en iCal correctamante."},"list":{"title":"Calendarios vinculados","sync":"Actualizar sincronización","columns":{"platform":"Plataforma","url":"URL","sync":"Sincronización","error":"Error"},"getSettingsError":"Algo ha fallado al buscar tus espacios vinculados con iCal, inténtalo más tarde","syncSettingsError":"No hemos podido desvincular este espacio con iCal, inténtalo más tarde","deleteSettingError":"No hemos podido sincronizar tus tus espacios vinculados con iCal, inténtalo más tarde","errorAction":"Infórmanos de la incidencia"},"export":{"title":"Exportar calendario","text":"Copia el enlace y pégalo en aquellos portales o calendarios externos que permitan la importación de iCal.","copy":{"label":"iCal URL","label-title":"URL de exportación del calendario en formato iCal","button":"Copiar URL","create":"Generar URL"}},"modal":{"title":"Eliminar calendario iCal","text":"¿Seguro que quieres quitar el calendario iCal? Dejarás de sincronizar y ya no tendrás acceso al calendario.","buttonCancel":"Cancelar","buttonDelete":"Eliminar"}},"platforms":{"meta":{"title":"Sincronizar calendarios"},"header":{"title":"Sincroniza tus calendarios","subtitle":"Evita reservas duplicadas con la sincronización bidireccional: cualquier cambio en tu disponibilidad se actualizará automáticamente en todas tus plataformas y viceversa. ¿Tienes dudas sobre cómo funciona?","subtitleLink":"Consulta nuestro centro de ayuda."},"cards":{"ical":{"title":"Sincronizar calendarios","description":"Importa y exporta tus calendarios externos de Booking, Airbnb o Google Calendar mediante el estándar iCal para evitar el overbooking.","cta":"Gestionar iCal"},"avaibook":{"title":"Sincronizar AvaiBook","description":"Gestiona la disponibilidad y precios de tus alojamientos en tiempo real."},"misterplan":{"title":"Sincronizar MisterPlan"}},"avaibook":"Vincular AvaiBook","misterplan":"Vincular MisterPlan","ical":"Vincular iCal","status":{"synced":"Sincronizado","error":"Error de sincronización","manageConnection":"Gestionar conexión","connectNow":"Conectar ahora","linkedUnitsOne":"{linked} de {total} unidad vinculada","linkedUnitsMany":"{linked} de {total} unidades vinculadas"}}},"quality-rate":{"quality-rate":{"title":"Calidad de Atención","subtitle":"Puntuación de las buenas prácticas de uso en tu alojamiento para ofrecer un servicio de calida
1d en EscapadaRural.","q1ResponseTime":{"title":"Tiempo de respuesta: Responde a las consultas en menos de 12 horas","subtitle":"Los viajeros aprecian la rapidez de respuesta para escoger y reservar un alojamiento, al contestar rápido aseguras que el viajero reserve contigo, ya que los viajeros suelen contactar con varios alojamientos."},"q2ResponseRate":{"title":"Tasa de respuesta: Responde a todas las consultas","subtitle":"Contesta a todas las consultas de los viajeros con el sistema de mensajes de EscapadaRural. Cuentan las pre-reservas que contestes por escrito y aquellas que contestes por teléfono, siempre y cuando el viajero confirme tu llamada. No obstante, nuestra recomendación es que, aunque hayas hablado con el viajero por teléfono, le contestes por escrito en tu área privada con un resumen de la conversación. <a href='/owner/{ownerId}/menu/messages' target='_blank' >Ir a mis mensajes</a>."},"q3AcceptanceRate":{"title":"Tasa de aceptación de reservas online: Confirma en menos de 24 horas","subtitle":"El viajero ha escogido tu alojamiento y ya pagó el anticipo así que espera que confirmes su reserva online lo antes posible. Rechazar las reservas o dejarlas expirar a las 24h te puntúa negativamente. Debes tener tu calendario actualizado para evitar rechazar reservas por tener las fechas ocupadas, <a href='https://ayuda.escapadarural.com/support/solutions/articles/205000048072-c%C3%B3mo-funciona-la-tasa-de-aceptaci%C3%B3n' target='_blank'>más información</a>. Si no tienes reserva online, te recomendamos que hables con tu asesor comercial ya que los viajeros buscan reservar con inmediatez. <a href='/aumenta-tus-reservas#contact-form' target='_blank'>Contactar con un asesor</a>."},"q4Calendar":{"title":"Calendario: Actualiza tu ocupación real al menos cada 7 días","subtitle":"Asegúrate de tener la ocupación actualizada, tu calendario debe tener una fecha de actualización de al menos 7 días. Nuestra recomendación es que vincules tu calendario externo de <a href='https://ayuda.escapadarural.com/support/solutions/articles/205000048103-vincula-tu-ocupaci%C3%B3n-con-ical' target='_blank'>iCal</a> o Channel Manager (<a href='https://ayuda.escapadarural.com/support/solutions/articles/205000048056-vincula-tu-ocupaci%C3%B3n-y-reservas-con-avaibook' target='_blank'>AvaiBook</a> o <a href='https://ayuda.escapadarural.com/support/solutions/articles/205000048053-vincula-tu-ocupaci%C3%B3n-y-reservas-con-misterplan' target='_blank'>MisterPlan</a>) y despreocúpate. <a href='https://ayuda.escapadarural.com/support/solutions/articles/205000048105-%C2%BFc%C3%B3mo-actualizar-mi-calendario-de-ocupaci%C3%B3n-' target='_blank'>Más información</a>."},"q5Conditions":{"title":"Condiciones: Informa de las condiciones de tu alojamiento","subtitle":"Proporciona a los viajeros tus condiciones de reserva de forma clara y sencilla (fianza, política de cancelación, hora de entrada y salida y otras normas). <a href='/propietario/{ownerId}/casa/{cottageId}/editar/condiciones-reserva' target='_blank'>Ver condiciones</a>."},"q6Prices":{"title":"Precios: Mantén tus precios actualizados","subtitle":"Ten siempre los precios del alojamiento  correctos y actualizados en cada temporada durante todo el año o crea precios especiales para fechas concretas. Indica el número mínimo de noches si fuera tu caso. El precio que ve el viajero debe ser el precio final. <a href='https://ayuda.escapadarural.com/support/solutions/articles/205000048112-precios-c%C3%B3mo-configurarlos' target='_blank'>Más información</a>."}},"good-practices":{"title":"Otras buenas prácticas","subtitle":"Aplica los siguientes consejos que los viajeros tienen muy en cuenta para reservar.","photos":{"title":"Fotos: actualizadas y de calidad","subtitle":"Mantén tu galería con fotos de calidad de todos los espacios y destaca lo mejor de tu alojamiento. Piensa que la galería es tu escaparate por lo que ponte en el lugar del viajero: ¿qué te gustaría ver para elegir un alojamiento? <a href='https://ayuda.escapadarural.com/support/solutions/articles/205000048125-%C2%BFc%C3%B3mo-actualizar-las-im%C3%A1genes-de-mi-alojamiento-' target='_blank'>Más información</a>."},"info":{"title":"Información general: Describe y completa las características","subtitle":"La descripción de tu alojamiento ayuda al viajero a entender mejor qué características especiales tienes. Además completa las características y actividades que ofrezcas. Recuerda que los viajeros usan los filtros para encontrar alojamientos que cumplen con sus requisitos de búsqueda. <a href='/propietario/{ownerId}/casa/{cottageId}/editar/descripcion' target='_blank'>Cambiar descripción</a>."},"sales":{"title":"Ofertas: Ofrece descuentos","subtitle":"Publica promociones especiales para fechas concretas, a los viajeros les encanta tener opciones de precios con descuentos para sus escapadas. <a href='/propietario/{ownerId}/menu/ofertas/nueva' target='_blank' >Crear una oferta</a>."},"reviews":{"title":"Opiniones: Pide la opinión a tus viajeros","subtitle":"Potencia tus futuras reservas con reseñas auténticas de tus clientes, para los viajeros es muy importante tener reseñas de otros viajeros. Haz seguimiento tras la estancia y contesta siempre a todas ellas y así los futuros viajeros que vean tu ficha en EscapadaRural podrán ver qué atención das a tus clientes. <a href='/propietario/{ownerId}/menu/invita-seleccion' target='_blank'>
1Invita a opinar</a>."}}},"select-service":{"title":"Planes y tarifas","price-suffix":"+ IVA","select-plan":"Seleccionar","not-eligible":{"line1":"No es posible continuar con la contratación del servicio en este momento.","line2":"Por favor, contacta con nuestro equipo de Customer Care para que puedan ayudarte."},"faqs":{"title":"Preguntas frecuentes"}}}`),"online-booking":{meta:{title:`Reserva Online para {name}`},success:{meta:{title:`Solicitud de reserva enviada para {name}`},title:`¡Solicitud de reserva enviada!`,text01:`Ahora el alojamiento debe confirmar la reserva.`,text02:`Tiene 24 horas para darte una respuesta.`,"your-booking":`Detalles de tu reserva`,"button-bookings":`Ver mi reserva`,"button-message":`Envía un mensaje al alojamiento`,"button-review":`Valora el proceso de reserva online`,"cta-title":`¿Preparado para tu escapada? Descubre qué hacer en tu destino.`,"cta-button":`Visita nuestro magazine`},booking:{title:`Tu reserva`,dateIn:`Entrada`,dateOut:`Salida`,nights:`Noches`,people:`Personas`,link:`Modificar`,bookingNumber:`Número de reserva`,answerRate:`Este alojamiento responde al {rate}% de los mensajes en {range} de {value} {unit}.`,noAnswerRate:`Este alojamiento responde al 0% de los mensajes.`,verifiedCalendar:`Calendario verificado`,verifiedCalendarText:`Este calendario sincroniza la disponibilidad en tiempo real para asegurar que las fechas estén libres.`},resume:{title:`Detalles del coste`,rentUnits:{people:`{n} persona | {n} personas`,additionalPeople:`({n} en cama adicional)`},extras:{people:`Para {n} persona | Para {n} personas`,days:`para {n} día | para {n} días`,units:`{n} unidad | {n} unidades`,daysFor:`por {n} día | por {n} días`,singlePayment:`Pago único`,for:`para`}
1,total:`Total`,totalIva:`(Impuestos incluidos)`,advance:`Anticipo a pagar ahora`,advancePercent:`{ percent }% del total de la reserva`,time:`El alojamiento tiene hasta 24 horas para confirmar tu reserva.`,firstPayment:`El { date } pagarás { amount } de anticipo.`,noFirstPayment:`El momento de la confirmación pagarás { amount }.`,remaining:`El pago del { percent }% restante se realiza a través del método que acuerdes con el alojamiento. Te faltará pagar { money }.`},conditions:{title:`Condiciones de la reserva`,description:`Las condiciones son definidas por cada alojamiento. Impuestos incluidos.`,advance:{title:`Anticipo`,text:`Un { percent }% del total de la reserva.`},cancellation:{title:`Política de cancelación`,noValue:`Este alojamiento no devuelve el anticipo.`,values:{date:`Hasta el { date }`,since:`Desde { date }`,sinceToday:`Desde hoy`,days:`{ days } días antes de la llegada`,percent:`Devolución del { percent }%`,arriveDate:`El día de la llegada`,totalAmount:`Cancelación gratuita`,noAmount:`Sin devolución`,partial:`(devolución parcial)`}},deposit:{title:`Fianza`,text:` Un { percent }% del total de la reserva.`,noDeposit:`No se requiere fianza para reservar este alojamiento.`}},"conditions-panel":{noPayment:`Todavía no se te cobrará nada ahora.`,freeCancellation:`<b>Cancelación gratuita</b> hasta el { date }.`},rules:{title:`Normas del alojamiento`,noInformation:`No informada.`,entrance:{title:`Entrada:`,text:`a partir de las { hour } h.`},departure:{title:`Salida:`,text:`antes de las { hour } h.`},other:{title:`Otras normas del alojamiento`,noInformation:`No informadas.`}},data:{title:`Tus datos`,button:`Modificar`,cancel:`Cancelar`,form:{phone:`Teléfono`,"phone-title":`Introduce tu número de teléfono`,firstName:`Nombre`,"firstName-title":`Introduce tu nombre`,lastName:`Apellidos`,"lastName-title":`Introduce tus apellidos`,submit:`Guardar datos`}},pay:{"message-to-owner":{title:`Cuéntale al alojamiento sobre tu escapada`,text:`A las personas que te reciben les encanta saber quién se alojará en su casa, ¡cuenta el motivo de tu viaje!`},"pay-with":`Pagar con`,form:{creditCard:`Tarjeta de crédito`,expire:`Fecha de caducidad`,cvc:`CVC`,bookingConditions:`He leído y acepto las condiciones de la reserva de este alojamiento.`,submitandpay:`Solicitar reserva y pagar`,submit:`Solicitar reserva`,securePayment:`Tu pago seguro a través de la plataforma Stripe`,messagePlaceholder:`Hola, viajo con... / El Motivo de mi viaje es...`}},contact:{title:`¿Tienes alguna duda antes de reservar?`,link:`Envía un mensaje al alojamiento`},error:{payment:`Tu pago fue correcto, pero algo ha fallado. Hemos revertido el pago para que puedas volver a intentarlo. Si prefieres puedes contactarnos`,cancellation:`Tu pago fue correcto, pero algo ha fallado. Verifica que tu pago no se ha procesado en tu tarjeta. Si prefieres puedes contactarnos`,stripe:`Tu pago ha sido rechazado y no se pudo completar la reserva.`,phone:`Para completar la reserva debes rellenar tus datos. Verifícalos en "Tus datos" más arriba en la página.`,generic:`Error al cargar los datos de la reserva. Inténtalo de nuevo.`,contactUs:`Contáctanos`}},outings:{common:{name:`Nombre`,dates:`Fechas`,destination:`Destino`,people:`Personas`,description:`Descripción`,loading:`Cargando...`,create:`Crear nueva escapada`,edit:`Editar`,save:`Guardar`,cancel:`Cancelar`,delete:`Eliminar`,invite:`Invitar`},list:{title:`Mis Escapadas`,empty_title:`No tienes escapadas planificadas`,empty_description:`Crea tu primera escapada para organizar tus próximas aventuras`,deleted_message:`Escapada '{name}' eliminada`},detail:{createdAt:`Creada el`,people_count:`Número de personas`,aria_delete:`Eliminar {name}`,aria_invite:`Generar invitación para {name}`,invitation_success_title:`Invitación generada`,invitation_success_description:`El enlace ha sido copiado al portapapeles`,invitation_error_copy_title:`Error al copiar`,invitation_error_copy_description:`No se pudo copiar el enlace al portapapeles`,invitation_error_title:`Error`,invitation_error_description:`Error al generar la 
1invitación`},create:{title:`Planifica tu Escapada`,name_label:`Nombre de la escapada`,name_placeholder:`Ej: Fin de semana en la montaña`,description_label:`Descripción`,description_placeholder:`Describe tu escapada (opcional)`,dates_label:`Fechas`,dates_message:`Selecciona las fechas de tu escapada`,people_label:`Número de personas`,people_placeholder:`Ej: 4`,destination_label:`Destino`,destination_placeholder:`Ej: Pirineos, España`,submit:`Crear Escapada`},join:{title:`Unirse a escapada`,validating:`Validando invitación...`,validating_description:`Por favor, espera mientras verificamos tu invitación`,valid_title:`Invitación válida!`,valid_description:`Redirigiendo al detalle de la escapada...`,invalid_title:`Invitación inválida`,go_to_list:`Ir a mis escapadas`,error_expired_title:`Invitación expirada`,error_expired_description:`Esta invitación ha caducado. Por favor, solicita una nueva invitación al creador de la escapada.`,error_used_title:`Invitación ya utilizada`,error_used_description:`Esta invitación ya ha sido utilizada anteriormente y no puede ser reutilizada.`,error_not_found_title:`Invitación no encontrada`,error_not_found_description:`No se ha encontrado esta invitación. Verifica que la URL esté completa o solicita una nueva invitación.`,error_validation_title:`Error de validación`,error_validation_description:`Ha ocurrido un error al validar la invitación. Por favor, inténtalo de nuevo más tarde.`},cottages:{title:`Casas Rurales`,loading:`Cargando casas...`,empty_title:`No hay casas añadidas`,empty_description:`Todavía no se han añadido casas rurales a esta escapada`,unavailable:`Casa no disponible`,unavailable_message:`Esta casa no está disponible`,alt_image:`Casa rural`,error_load:`Error al cargar casas`,error_invalid_response:`Error: respuesta inválida del servidor`,aria_details:`Ver detalles de {name}`,browse_cottages:`Buscar casas rurales`},notes:{title:`Notas`,empty:`Sin notas`,placeholder:`Escribe tus notas aquí...`,error_auth:`Usuario no autenticado`,error_update:`Error al actualizar la nota`},favorite_modal:{auth_title:`Inicia sesión`,auth_description:`Debes iniciar sesión para guardar casas rurales`,selection_title:`Guardar casa`,selection_description:`Escoge dónde guardar`,favorites_title:`Favoritos`,favorites_description:`Guarda en tus listas de favoritos`,outings_title:`Escapada`,outings_description:`Añade a una escapada planificada`,add_modal_title:`Añadir a escapada`,adding:`Añadiendo casa...`,loading:`Cargando escapadas...`,empty_title:`No tienes escapadas planificadas`,empty_description:`Crea tu primera escapada para poder añadir casas rurales`,error_already_added:`Esta casa ya está en tu escapada`,error_add:`Error al añadir casa a la escapada`,success_title:`¡Casa añadida!`,success_description:`La casa se ha añadido correctamente a tu escapada`},expenses:{title:`Gastos`,loading:`Cargando gastos...`,empty_title:`No hay gastos registrados`,empty_description:`Añade gastos para llevar un control del presupuesto de tu escapada`,add_expense:`Añadir gasto`,delete_expense:`Eliminar gasto`,confirm_delete:`¿Estás seguro de que quieres eliminar este gasto?`,description:`Descripción`,description_placeholder:`Ej: Gasolina, comida, alojamiento...`,amount:`Cantidad`,amount_placeholder:`0.00`,total:`Total de gastos`,per_person:`Por persona`,add:`Añadir`,error_title:`Error`,error_add:`Error al añadir el gasto`,error_delete:`Error al eliminar el gasto`},delete_modal:{title:`Eliminar escapada`,message:`¿Estás seguro de que quieres eliminar la escapada '{name}'? Esta acción no se puede deshacer.`,confirm:`Eliminar`,cancel:`Cancelar`}},photos:{meta:{title:`Fotos`},description:`Arrastra las fotos para ordenarlas y guarda la posición. Es el orden que aparecerán en tu ficha.`,empty:`Añade fotos de tu alojamiento.`,saveButton:`Guardar posición`,addButton:`Añadir fotos`,editButton:`Editar`,deleteButton:`Eliminar`,inProcess:`Procesando...`,modal:{edit:{title:`Editar foto`,label:`Añade una breve descripción a la foto`,placeholder:`Por ejemplo: Comedor, salón principal, habitación matrimonio, etc.`,"placeholder-title":`Escribe una descripción breve que identifique el espacio o elemento de la foto`,description:`Te quedan {n} caracteres`,saveImage:`Guardar foto`,save:`Guardar cambios`},delete:{text:`Eliminar foto`,description:`¿Estás seguro que quieres eliminar esta foto?`,cancelButton:`Cancelar`,deleteButton:`Eliminar`}}},videos:{meta:{title:`Vídeos`},description:`Arrastra los vídeos para ordenarlos y guarda la posición. Es el orden que aparecerán en tu ficha.`,empty:`Añade vídeos de tu alojamiento.`,saveButton:`Guardar posición`,addButton:`Añadir vídeo`,planNotCompatible:`Tu plan actual no es compatible con la adición de nuevos vídeos.`,modal:{add:{title:`Añadir vídeo`,urlLabel:`URL del vídeo de YouTube`,urlPlaceholder:`https://youtu.be/aq...`,descriptionLabel:`Descripción (opcional)`,descriptionPlaceholder:`Por ejemplo: Tour del alojamiento, vistas al valle, etc.`,descriptionHint:`Te quedan {n} caracteres`,saveButton:`Añadir vídeo`},edit:{title:`Editar vídeo`,label:`Añade una breve descripción al vídeo`,placeholder:`Por ejemplo: Tour del alojamiento, vistas al valle, etc.`,description:`Te quedan {n} caracteres`,save:`Guardar cambios`},delete:{text:`Eliminar vídeo`,description:`¿Estás seguro que quieres eliminar este vídeo?`,cancelButton:`Cancelar`,deleteButton:`Eliminar`}}},views:JSON.parse(`{"cottage":{"seo":{"title":"{0} en {1}"},"gallery":{"photos":"{n} Foto | {n} Fotos","videos":"{n} Vídeo | {n} Vídeos","legend":"{current} de {total} fotos","a11y":{"openGallery":"Abrir imagen {n} en la galería","openImage":"Ver en detalle imagen {n}"}},"description":"Descripción del alojamiento","from":"Desde","seeClose":"Ver qué hay cerca","googleReviews":"Publicado en","priceAverageText":"pers./noche (aprox.)","priceAverageTextDescription":"Precio medio: {price} pers./noche (aprox.)","visualInformation":{"rentTypeFull":"Alojamiento entero","rentTypeRooms":"Habitación","rentTypeBoth":"Entero o habitación","capacity":"personas","room":"1 dormitorio","numRooms":"{n} dormitorios","bed":"1 cama","numBeds":"{n} camas","toPrices":"Ver espacios y precios"},"tags":{"online-booking":"Reserva online","freeCancellation":"Cancelación gratuita","verifiedCalendar":"Calendario verificado","verifiedCalendarText":"Este calendario sincroniza la disponibilidad en tiempo real para asegurar que las fechas estén libres."},"share":{"title":"Comparte este alojamiento","copy":{"title":"Copiar enlace","copiedText":"Enlace copiado"},"whatsapp":{"title":"Whatsapp"}},"recommendedByCottageTop":"Alojamientos recomendados cercanos","recommendedByCottageBottom":"Otros alojamientos de la zona","re
1commended":{"title":"Alojamientos recomendados para ti:","maxcapacity":"Capacidad máx. {n} persona | Capacidad máx. {n} personas"},"ownerBanner":{"highRejectionRate":"+80% de reservas rechazadas.","highAcceptanceRate":"+80% de reservas aceptadas.","slowResponse":"Tarda más de 72 horas en responder.","fastResponse":"Responde en menos de 24 horas."},"owner":{"title":"El propietario","languages":"Idiomas","sendMessage":"Enviar mensaje","showPhone":"Ver teléfono","sendWhatsapp":"Enviar Whatsapp","acceptanceRate":"Acepta el {rate}% de las reservas.","answerRate":"Responde al {rate}% de los mensajes en {range} de {value} {unit}.","noAnswerRate":"Responde al 0% de los mensajes."},"registerNumber":{"title":"Nº de registro","text1":"Este alojamiento está gestionado por un comerciante profesional.","text2":"Nº de registro de turismo:","text3":"Registro en Turismo en trámites","text4":"{name}, presta sus servicios con el compromiso de dar cumplimiento a la normativa aplicable."},"singlePropertyRegister":{"text":"Registro único de la propiedad:","property":"{name}: {number}","separator":";"},"errorSection":{"title":"¿Ves algún error?","contact":"Contáctanos"},"seoLinks":{"nearbyCornersTitle":"Puntos de interés cercanos","nearbyVillagesTitle":"Pueblos cercanos","nearbyZonesTitle":"Destinos cercanos"},"keepSearching":{"title":"¿Todavía no has encontrado alojamiento?","button":"Seguir buscando"},"activities":"Actividades","characteristics":{"title":"Características y servicios","certifications":{"title":"Certificaciones de calidad:","quality":"Q de calidad","stars":"{n} Estrella verde | {n} Estrellas verdes"},"exteriors":"Exterior","interiors":"Interior","services":"Servicios","accessibilities":"Accesibilidad","situations":"Situación"},"bed-distribution":{"title":"Distribución camas","roomTypes":{"BEDROOM":"Dormitorio","DINING_ROOM":"Comedor","LIVING_ROOM":"Salón","STUDY":"Estudio"},"bedTypes":{"SMALL_SINGLE":"{n} individual pequeña | {n} individuales pequeñas","STANDARD_SINGLE":"{n} individual | {n} individuales","TWIN_XL":"{n} plaza y media","DOUBLE":"{n} doble","STANDARD_MATRIMONIAL":"{n} matrimonio","QUEEN":"{n} queen","KING_SIZE":"{n} king size","PRESIDENTIAL_KING":"{n} presidential king","SOFA_BED":"{n} sofá cama | {n} sofás cama","CRADLE":"{n} cuna | {n} cunas","BUNK":"{n} litera | {n} literas"}},"interests":"Lugares de interés","location":{"title":"Ubicación","localization":"Dirección: ","coordinates":{"title":"Coordenadas: ","text":"Latitud {latitude} - Longitud {longitude}"},"description":"Aclaraciones:"},"aside":{"customers":"Personas","customers-title":"Introduce el número de personas","toPrices":"Ver espacios y precios","noData":"Las fechas y personas son obligatorias","sendMessage":"Enviar mensaje","verifiedCalendar":"Reserva con tranquilidad: este calendario está siempre actualizado."},"reviews":{"title":"Opiniones","seeAllReviews":"Ver todas las opiniones","rateCottage":"Valorar alojamiento","averageRate":"Valoración media:"},"googleReviewsTitle":"Opiniones de Google","deals":{"title":"Ofertas del alojamiento"},"socialLinks":{"a11y":{"website":"Visitar sitio web","facebook":"Visitar Facebook","instagram":"Visitar Instagram","x":"Visitar x"}},"map":{"zoom":{"in":"Acercar","out":"Alejar"},"fullscreen":{"title":"Pantalla completa","titleCancel":"Salir de pantalla completa"}}},"cottage-list":{"config":{"default-country":"España"},"meta":{"title":"Casas rurales según tus preferencias | ✓ Reserva tu alojamiento","titleDestination":"Casas rurales en {destination} | ✓ Reserva tu alojamiento","titleCorner":"Casas rurales cerca de {corner} | ✓ Reserva tu alojamiento","titleFacet":"{facetTitle} | ✓ Reserva tu alojamiento","description":"Guía de casas rurales en {destination}, alojamientos organizados por precio, capacidad y características. Encuentra la casa rural en {destination} a tu medida.","descriptionNear":"Guía de casas rurales cerca de {destination}, alojamientos organizados por precio, capacidad y características. Encuentra la casa rural cerca de {destination} a tu medida.","descriptionCorner":"Guía de casas rurales cerca de {corner}, alojamientos organizados por precio, capacidad y características. Encuentra la casa rural cerca de {corner} a tu medida.","descriptionDestination":"Todas las casas rurales en {destination}, {cottages} alojamientos organizados por precio, capacidad y características. Encuentra la casa rural en {destination} a tu medida."},"cottageCard":{"visualInformation":{"rentTypeFull":"Alojamiento entero","rentTypeRooms":"Habitación","rentTypeBoth":"Entero o habitación","capacity":"personas","room":"1 dormitorio","numRooms":"{n} dormitorios","bed":"1 cama","numBeds":"{n} camas","toPrices":"Ver espacios y precios"},"tags":{"online-booking":"Reserva online","freeCancellation":"Cancelación gratuita","verifiedCalendar":"Calendario verificado"},"priceAverageText":"pers./noche (aprox.)","priceTotal":"Desde {n}
1","priceTotalText":"(para las fechas seleccionadas)","viewOnMap":"Ver en mapa","distance":"A {n} Km de {l}.","link":"Ir a detalle de { name }","deal":"Oferta","dealAvailable":"Ofertas para otras fechas","favorite":"Guardar casa"},"filters":{"title":"Filtros","dates":"Entrada - Salida","capacity":"Personas:","exactCapacity":"Capacidad exacta","exactCapacityInfo":"Mostrar solo espacios que tengan esta capacidad exacta y evitar resultados para más personas de las que buscas. Requiere añadir fechas y numero de personas.","exactCapacityDisabledInfo":"Para activar esta opción debes seleccionar fechas y número de personas.","priceRange":"Precio medio:","priceRangeText":"De {min} a +{max} €","priceUnit":"persona / noche","rentalType":"Tipo de alquiler:","rentalTypeEntire":"Alojamiento entero","rentalTypeRooms":"Por habitaciones","recommended":"Recomendados:","onlineBooking":"Reserva online","onlineBookingDescription":"Alojamientos que permiten el pago con tarjeta.","freeCancellation":"Cancelación gratuita","sales":"Alojamientos con ofertas","keywordsLabel":"Búsqueda por palabras:","keywordsLabelInfo":"Mostrar alojamientos que contengan estas palabras","keywordsPlaceholder":"Ej: pádel, cuna o meditación","popularFeatures":"Características más usadas:","amenities":"Acondicionamiento:","location":"Ubicación:","services":"Servicios:","close":"Cerrar","clear":"Borrar filtros","apply":"Aplicar","compareWithHomeToGo":"Comparar con HomeToGo"},"search":{"placeholder":"¿Dónde quieres ir?","searchOptions":"Opciones de búsqueda","noResults":"No se encontraron resultados"},"map":{"title":"Mapa de alojamientos","defaultTitle":"España","backToList":"Volver a lista","breadcrumb":"Mapa","people":"personas","rooms":"habitaciones","night":"noche","priceTotal":"Total: {n}","priceTotalText":"(para las fechas seleccionadas)","priceAverageText":"pers./noche (aprox.)","poi":{"legend":{"title":"Puntos de interés","monument":"Monumentos","nature":"Naturaleza"}},"zoom":{"in":"Acercar","out":"Alejar"},"fullscreen":{"title":"Pantalla completa","titleCancel":"Salir de pantalla completa"},"head":{"title":"Mapa de casas rurales en {location} | Escapada Rural","description":"Explora casas rurales en {location} en el mapa. Encuentra el alojamiento perfecto navegando por la zona."},"meta":{"title":"Mapa de casas rurales en {location} | Escapada Rural","description":"Explora casas rurales en {location} en el mapa. Encuentra el alojamiento perfecto navegando por la zona."}},"results":{"buttons":{"filters":"Filtros","map":"Mapa","list":"Listado","close":"Cerrar"},"alert":{"onlineBooking":{"title":"Tu escapada es en breve","description":"Para cerrar tu reserva más rápido puedes filtrar por alojamientos que te permitan pagar online hoy el anticipo.","action":"Filtrar reserva online"},"addDates":{"title":"Añadiendo fechas y n.º de personas podrás ver el precio exacto para cada alojamiento.","action":"Añadir fechas"},"exactCapacity":{"title":"Filtrando por capacidad exacta evitarás resultados para más personas de las que buscas.","action":"Filtrar capacidad exacta"},"nearCottages":{"onlyNear":"No encontramos alojamientos en {l} con tus filtros, pero aquí tienes opciones cercanas.","withNear":"También tienes {n} alojamientos cerca de {l} con todos tus requisitos"}},"heading":{"allCottages":"{n} Alojamientos en {l}","filteredCottages":"{n} Alojamientos que cumplen tus requisitos","nearCottages":"{n} Alojamientos cerca de {l}","cornerCottages":"{n} Casas rurales cerca de {c}, en {l}","defaultZone":"la zona"},"breadcrumb":{"home":"Inicio","cottages":"Casas Rurales","cottagesSpain":"Casas Rurales en España","results":"Resultados"},"empty":{"title":"No se encontraron alojamientos","description":"Intenta ajustar tu búsqueda para ver resultados","backToResults":"Volver a los resultados"},"emptyFilters":{"title":"No encontramos alojamientos cercanos con estos filtros.","description":"Intenta ajustar tus filtros para ver más resultados","clearFilters":"Limpiar filtros"},"sort":{"relevant":"Más relevantes primero","updated":"Calendario actualizado","numreviews":"Más opiniones","averagereviews":"Mejor valoradas","priceAsc":"Precio más bajo"},"pagination":{"text":"{start} - {end} de {total} alojamientos rurales"},"mapResults":{"heading":"{n} resultados en el área del mapa"}},"reviews":{"title":"Últimas opiniones en  { name }"},"closeCottages":{"title":"Turismo rural cerca de {title}"}},"cottage-contact":{"seo":{"title":"Contacta con {name}"},"title":"Contacta con el alojamiento","answerRate":"Este alojamiento responde al {rate}% de los mensajes en {range} de {value} {unit}.","noAnswerRate":"Este alojamiento responde al 0% de los mensajes.","cottageLink":"Ver alojamiento","underFormMessage":"Contacto sin compromiso.","price":{"message":"Añade fechas y personas para ver el precio","view":"Ver precio","total":"Total","from":"Desde","emptyMessage":"Lo sentimos, no se ha encontrado precio para tus criterios. Inténtalo con otros criterios.","errorMessage":"No hemos podido calcular el precio, pero puedes continuar y enviar tu mensaje."},"form":{"date":{"label":"Fechas","placeholder":"Entrada - Salida"}
1,"people":{"label":"Nº de personas","placeholder":"Personas","title":"Introduce el número de personas"},"firstName":{"label":"Tu nombre","title":"Introduce tu nombre completo"},"email":{"label":"Tu e-mail","title":"Introduce tu dirección de correo electrónico"},"phone":{"label":"Tu teléfono","title":"Introduce tu número de teléfono"},"message":{"label":"Tu mensaje para el alojamiento","title":"Escribe tu consulta o mensaje para el alojamiento","max":"Te quedan {n} caracteres"},"comms":{"label":"Quiero recibir ofertas y otras comunicaciones sobre novedades de productos y servicios, incluidas recomendaciones personalizadas basadas en mi actividad en la plataforma."},"confirmation":{"label":"He leído y acepto las {useConditions} y la {privacyPolicy}, y acepto darme de alta en EscapadaRural.","useConditions":"Condiciones de uso","privacyPolicy":"Política de privacidad","useConditionsUrl":"/aviso-legal","privacyPolicyUrl":"/politica-privacidad"},"finalMessage":{"dateAndPeople":"Consulta para {date}, {people} personas, {message}","date":"Consulta para {date}, {message}","people":"Consulta para {people} personas, {message}"},"send":"Enviar mensaje","error":"Ha habido un error en el momento del envío, por favor, inténtalo de nuevo.","success":{"title":"¡Mensaje enviado!","subtitle":"El alojamiento contactará contigo. Consulta todas tus bandejas y tu correo spam.","recommended":"Alojamientos recomendados para ti:","continue":"Continuar navegando"}}},"cottage-contact-whatsapp":{"seo":{"title":"Contacta con {name}"},"title":"Contacta con el alojamiento","answerRate":"Este alojamiento responde al {rate}% de los mensajes en {range} de {value} {unit}.","noAnswerRate":"Este alojamiento responde al 0% de los mensajes.","cottageLink":"Ver alojamiento","underFormMessage":"Contacto sin compromiso.","price":{"message":"Añade fechas y personas para ver el precio","view":"Ver precio","total":"Total","from":"Desde","emptyMessage":"Lo sentimos, no se ha encontrado precio para tus criterios. Inténtalo con otros criterios.","errorMessage":"No hemos podido calcular el precio, pero puedes continuar y enviar tu mensaje."},"form":{"date":{"label":"Fechas","placeholder":"Entrada - Salida"},"people":{"label":"Nº de personas","placeholder":"Personas","title":"Introduce el número de personas"},"firstName":{"label":"Tu nombre","title":"Introduce tu nombre completo"},"email":{"label":"Tu e-mail","title":"Introduce tu dirección de correo electrónico"},"phone":{"label":"Tu teléfono","title":"Introduce tu número de teléfono"},"message":{"label":"Tu mensaje para el alojamiento","title":"Escribe tu consulta o mensaje para el alojamiento","max":"Te quedan {n} caracteres"},"comms":{"label":"Quiero recibir ofertas y otras comunicaciones sobre novedades de productos y servicios, incluidas recomendaciones personalizadas basadas en mi actividad en la plataforma."},"confirmation":{"label":"He leído y acepto las {useConditions} y la {privacyPolicy}, y acepto darme de alta en EscapadaRural.","useConditions":"Condiciones de uso","privacyPolicy":"Política de privacidad","useConditionsUrl":"/aviso-legal","privacyPolicyUrl":"/politica-privacidad"},"finalMessage":{"dateAndPeople":"Consulta para {date}, {people} personas, {message}","date":"Consulta para {date}, {message}","people":"Consulta para {people} personas, {message}"},"send":"Enviar WhatsApp","error":"Ha habido un error en el momento del envío, por favor, inténtalo de nuevo.","success":{"title":"Ya puedes ver el mensaje en WhatsApp","subtitle":"Sigue la conversación para completar tu reserva o solventar dudas con el alojamiento directamente en Whatsapp.","openWhatsapp":"Abrir WhatsApp","messageWhatsapp":"Mensaje desde EscapadaRural para {cottage}. De {name}, teléfono: {phone}. Mensaje: {message}","recommended":"Alojamientos recomendados para ti:","continue":"Continuar navegando"}}},"cottage-contact-prebooking":{"seo":{"title":"Contacta con {name}"},"title":"Solicitud de reserva","answerRate":"Este alojamiento responde al {rate}% de los mensajes en {range} de {value} {unit}.","noAnswerRate":"Este alojamiento responde al 0% de los mensajes.","cottageLink":"Ver alojamiento","info":{"dateIn":"Entrada","dateOut":"Salida","nights":"Noches","people":"Personas","edit":"Modificar"},"resume":{"details":{"title":"Detalles del coste","people":"{n} persona | {n} personas"},"total":{"discount":"-{n}% descuento","label1":"Total","label2":"(Impuestos incluidos)","payment":"No has de pagar nada ahora.","deal":"Oferta"},"modal":"Detalles del precio"},"form":{"date":{"label":"Fechas","placeholder":"Entrada - Salida"}
1,"people":{"label":"Nº de personas","placeholder":"Personas","title":"Introduce el número de personas"},"firstName":{"label":"Tu nombre","title":"Introduce tu nombre completo"},"email":{"label":"Tu e-mail","title":"Introduce tu dirección de correo electrónico"},"phone":{"label":"Tu teléfono","title":"Introduce tu número de teléfono"},"message":{"label":"Tu mensaje","title":"Escribe tu consulta o mensaje para el alojamiento","placeholder":"Escribe aquí tu mensaje...","max":"Te quedan {n} caracteres"},"comms":{"label":"Quiero recibir ofertas y otras comunicaciones sobre novedades de productos y servicios, incluidas recomendaciones personalizadas basadas en mi actividad en la plataforma."},"confirmation":{"label":"He leído y acepto las {useConditions} y la {privacyPolicy}, y acepto darme de alta en EscapadaRural.","useConditions":"Condiciones de uso","privacyPolicy":"Política de privacidad","useConditionsUrl":"/aviso-legal","privacyPolicyUrl":"/politica-privacidad"},"finalMessage":{"title":"Detalle de la pre-reserva: {cottageName}: {rentUnitName}","nights":"{n} noche | {n} noches","dates":"({dateStart} - {dateEnd})","people":"capacidad: {n} persona | capacidad: {n} personas","message":"Mensaje del viajero: {userMessage}"},"info":"La solicitud de reserva es gratuita y sin compromiso.","send":"Solicitar reserva","error":"Ha habido un error en el momento del envío, por favor, inténtalo de nuevo.","success":{"title":"¡Solicitud enviada!","subtitle":"El alojamiento contactará contigo. Consulta todas tus bandejas y tu correo spam.","recommended":"Alojamientos recomendados para ti:","continue":"Continuar navegando"}},"verifiedCalendar":"Calendario verificado","verifiedCalendarText":"Este calendario sincroniza la disponibilidad en tiempo real para asegurar que las fechas estén libres."},"cottage-phones":{"title":"Habla con el alojamiento","cottageLink":"Ver alojamiento","extraText":"Si prefieres, antes de llamar puedes, añadir fechas y saber el precio exacto.","underMessage":"Di que viste el alojamiento en EscapadaRural."},"cottage-bookmarks":{"seo":{"title":"Guardar { name } en Favoritos"},"title":"Guardar Favoritos","goToAdminPage":"Crear nueva lista o modificar","yourLists":"Tus listas:","submit":"Guardar"},"cottage-prices":{"breadcrumb":{"prices":"Precios"},"stepper":{"prices":"Tu selección","extras":"Extras","prebooking":"Solicitud"},"seo":{"title":"Precios de {0} en {1}"},"cottageLink":"Ver alojamiento","readyNoVacancy":{"title":"No hay espacios disponibles para tu capacidad.","text":"{action1} o {action2}.","action1":"Cambiar nº de personas","action2":"Ver otros alojamientos"},"aside":{"customers":"Personas","customers-title":"Introduce el número de personas","toPrices":"Ver precios","sendMessage":"Enviar mensaje","total":"Total","withTaxes":"(impuestos incluidos)","noData":"Las fechas y personas son obligatorias","requestBooking":"Solicitar reserva","noCharges":"No has de pagar nada ahora.","freeCancellation":"¡Cancelación gratuita!","freeCancellationDescription":"Puedes cancelar tu reserva {days} días antes de la llegada.","verifiedCalendar":"Reserva con tranquilidad: este calendario está siempre actualizado."},"summary":{"dateIn":"Entrada","dateOut":"Salida","nights":"Noches","people":"Personas","modify":"Modificar"},"rentUnitsAndPrices":"Espacios y precios","cottage-types":{"COTTAGE":"Alojamiento entero (casa)","APARTMENT":"Alojamiento entero (apartamento)","ROOM_WITH_BATHROOM":"Habitación (con baño)","ROOM_WITHOUT_BATHROOM":"Habitación (sin baño)","ROOM_SHARED":"Habitación (compartida con otros clientes)"},"capacityLabel":"Capacidad:","bathroomsLabel":"Baños:","capacity":"{n} persona | {n} personas","bathrooms":"{n} baño | {n} baños","seePrices":"Ver precios","explanation":"Las condiciones son definidas por cada alojamiento. Impuestos incluidos.","selectNumPeople":"Elige cuantas personas:","onlineBooking":"Reserva Online","freeCancellation":"Cancelación gratuita","freeCancellationText":"Todavía no se te cobrará nada.","verifiedCalendar":"Calendario verificado","verifiedCalendarText":"Este calendario sincroniza la disponibilidad en tiempo real para asegurar que las fechas estén libres.","detail":{"bathrooms":"Nº baños: ","services":"Servicios: ","interior":"Interior: ","accessibility":"Acce
1sibilidad: ","exterior":"Exterior: ","extras":{"title":"Extras: ","peopleDay":"({price} por persona y día)","singlePayment":"({price} por pago único)","unityDay":"({price} por unidad y día)","unity":"({price} por unidad)"},"description":"Descripción: ","moreInfo":"Más información"},"owner":{"title":"El propietario","languages":"Idiomas","sendMessage":"Enviar mensaje","showPhone":"Ver teléfono","sendWhatsapp":"Enviar Whatsapp","acceptanceRate":"Acepta el {rate}% de las reservas.","answerRate":"Responde al {rate}% de los mensajes en {range} de {value} {unit}.","noAnswerRate":"Responde al 0% de los mensajes."},"conditions":{"title":"Condiciones de la reserva","advance":{"title":"Anticipo","text":"Un { percent }% del total de la reserva.","explanation":"Anticipo o pago por adelantado que solicita el alojamiento."},"cancellation":{"title":"Política de cancelación","noValue":"Este alojamiento no devuelve el anticipo.","values":{"days":"Hasta {n} día antes de la llegada | Hasta {n} días antes de la llegada","percent-text":"Devolución del","percent-value":"{ percent }%","arriveDate":"Menos de {n} día antes de la llegada | Menos de {n} días antes de la llegada","noAmount":"Sin devolución"},"noDate":{"text":"Añade las fechas de tu escapada para ver los detalles de cancelación de este alojamiento.","button":"Añadir fechas"}},"deposit":{"title":"Fianza","text":" Un { percent }% del total de la reserva.","noDeposit":"No se requiere fianza.","explanation":"Es el importe que puede solicitar el alojamiento para garantizar reparación de daños en el caso que ocurran."}},"rules":{"title":"Normas del alojamiento","noInformation":"No informada.","entrance":{"title":"Entrada:","text":"a partir de las { hour } h."},"departure":{"title":"Salida:","text":"antes de las { hour } h."},"other":{"title":"Otras normas del alojamiento","noInformation":"No informadas."},"extra":"Los precios los fija cada alojamiento. Impuestos incluidos."},"with-prices":{"description":"Para {people} y {nights}","people":"{n} persona | {n} personas","nights":"{n} noche | {n} noches","remove-rent-unit":"Quitar espacio","add-rent-unit":"Seleccionar espacio","deal":"Oferta"},"no-vacancy":{"description":"Espacio ocupado para las fechas seleccionadas.","action":"Cambiar fechas"},"min-nights-required":{"description":"Este espacio tiene un mínimo de {nights}","nights":"{n} noche | {n} noches","action":"Cambiar fechas"},"booking-advance-days-required":{"description":"Reserva con {days} de antelación mínima","days":"{n} día | {n} días","action":"Cambiar fechas"},"extras":{"title":"Servicios extras (opcional)","people":"Personas","people-title":"Introduce el número de personas para este servicio extra","days":"Días","days-title":"Introduce el número de días para este servicio extra","units":"Unidades","units-title":"Introduce el número de unidades para este servicio extra","description":{"PEOPLE_DAY":"{price} por persona y por día","UNITY_DAY":"{price} por unidad y por día","UNITY":"{price} por unidad","SINGLE_PAYMENT":"{price} pago único"},"modal":{"detail":"Detalles del precio","units":"{n} unidad | {n} unidades","days":"{n} día | {n} días","people":"{n} persona | {n} personas","for":"por","inRentUnit":"en {rentUnit}","singlePayment":"Pago único en {rentUnit}","total":"Total","totalIva":"(impuestos incluidos)","advance":"Anticipo a pagar ahora","advancePercentage":"{ percent }% del total de la reserva","advancePercentageConfirmation":"El propietario tiene 24 horas para confirmar tu reserva, si no lo hace, se te devolverá el 100% del importe pagado.","advancePercentageReturn":"El pago del { percent }% restante se realiza a través del método que acuerdes con el propietario. Te faltará pagar {amount}.","noPayment":"Todavía no se te cobrará nada.","payDate":{"freeCancellation":"Cancelación gratuita","uptoDays":"{freeCancellation} hasta {n} días antes de la llegada."}}},"dependent-message":"Espacio no disponible según la selección actual.","error":"No se pudo calcular el precio. Verifica fechas y personas e inténtalo nuevamente."},"owner-cottage-invite":{"meta":{"title":"Invitar a opinar a tus clientes"},"title":"Invita a los viajeros a opinar sobre su estancia","subtitle":"Después de la fecha de salida de los viajeros, te recomendamos que compartas el enlace a tu ficha para que valoren su estancia.","accommodation":"Alojamiento","whatsapp":{"title":"Invitar por Whatsapp","message":"Hola. Te invito a que dejes una opinión en EscapadaRural sobre tu estancia reciente en mi alojamiento, gracias"},"copy":{"title":"Copiar enlace a opinar","copiedText":"Texto copiado"},"alert":{"title":"Has desactivado las opiniones para este alojamiento.","textLink":"Volver a activarlas"}},"owner-rentUnit-edit":{"title":"Editar {name}","pageTitle":"Unidades de Alquiler de {name}","priceAndDiscounts":"Precio y descuentos","rentUnitNotFound":"No existe esta unidad alquilable","tabs":{"rentUnit":"Detalles de la unidad","basePrice":"Precios y descuentos","form":"Formulario","formMobile":"Precios: Vista formulario","calendar":"Calendario","calendarMobile":"Precios: Vista calendario","extras":"Selección de extras","rooms":"Habitaciones","roomsMobile":"Habitaciones"},"alertAvaibook":{"title":"Precios gestionados por tu Channel Manager","description":"Los valores definidos solo se mostrarán en esta pantalla como tarifa de respaldo si ocurre una desconexión."},"priceAndStay":{"title":"Precio y estancia","priceAndAvailability":{"title":"Precio noche","description":"El precio por noche que establezcas aquí será para las personas que pueden dormir en camas en tu alojamiento sin incluir las camas supletorias o sofá cama.","descriptionCompact":"Se aplica al nº de personas definidas y a todas las noches, salvo que se personalice por rango de fecha.","priceByNight":"Precio por noche","priceByWeekendNight":"Precio por noche de fin de semana (opcional)"},"stay":{"title":"Estancia noche","minimumNights":"Noches mínimas (opcional)"},"additionalPlaces":{"title":"Plazas adicionales","description":"Las plazas adicionales las defines en el resumen de tu alojamiento.","priceByExtraPersonByNight":"Precio plaza adicional por persona/noche (opcional)","maxExtraPeople":"Nº de personas adicionales que has definido"}},"discounts":{"title":"Descuentos","description":"Aquí puedes definir descuentos para diferentes duraciones de estancia que quieras ofrecer a tus viajeros/as.","weekly":{"label":"Semanal","description":"para 7 noches o más","discountByWeek":"Dto. por noche"},"monthly":{"label":"Mensual","description":"para 28 noches o más","discountByMonth":"Dto. por noche"}
1,"custom":{"label":"Personalizado","description":"los días que tú quieras","customNights":"Nº de noches","customDiscountByNight":"Dto. por noche"}},"actions":{"cancel":"Cancelar","save":"Guardar cambios","saveAndPublish":"Guardar y publicar unidad","success":"Tus cambios se han guardado correctamente.","error":"Ha habido un error. Por favor, inténtalo de nuevo."},"calendar":{"selectCottage":"Alojamiento","selectRentUnit":"Unidad de alquiler","goToMonth":"Ir al mes...","editBasePrices":"Editar precios y descuentos","viewBasePrices":"Ver precios y descuentos","basePricesTitle":"Precio"},"pricesByDateRange":{"title":"Precios por rango de fechas","description":"Aquí puedes editar por rango de fechas específicas. Los rangos de fechas que crees reemplazarán los ajustes predeterminados.","addButton":"Añadir precios por rango","priceByNight":"Precio por noche","priceByWeekendNight":"Precio fin de semana","minimumNights":"Estancia mínima","applyDiscounts":"Descuentos"},"rangeModal":{"title":"Precios por rango de fechas","description":"Aquí puedes editar por rango de fechas específicas. Las temporadas que crees reemplazarán los ajustes predeterminados.","dateAndPrice":"Fechas y precio","from":"Desde","to":"Hasta","pricePerNight":"Precio por noche","pricePerWeekendNight":"Precio por noche de fin de semana (opcional)","stay":"Estancia noche","sameAsGeneralConfig":"La duración de la estancia para estas fechas serán las mismas que en la configuración general.","minStay":"Noches mínimas (opcional)","discounts":"Descuentos","useGeneralDiscounts":"Usa los descuentos de la configuración general para estas fechas.","discard":"Descartar","save":"Guardar"},"deleteModal":{"title":"Eliminar rango de precio","text":" ¿Estás seguro que quieres eliminar este rango de precios? Esta acción no se puede revertir.","buttonCancel":"Cancelar","buttonDelete":"Eliminar rango"},"overwriteModal":{"title":"Rangos superpuestos","description":"Al continuar, se modificarán las fechas y se acortarán o dividirán los rangos de fechas afectados. ¿Deseas continuar?","affectedRanges":"Rangos afectados:","buttonDiscard":"Descartar","buttonConfirm":"Continuar y sobrescribir"},"rooms":{"pageTitle":"Editar distribución de {name}","sectionTitle":"Número de habitaciones","sectionDescription":"Añade todas las habitaciones que tiene tu alojamiento y indica la distribución de camas disponibles.","addButton":"Añadir habitaciones","noBeds":"Selecciona el tipo de cama*","unsavedModal":{"title":"¿Guardar los cambios?","description":"¿Quieres guardar los cambios que hiciste? Si no los guardas, los cambios que hiciste se perderán.","discard":"Descartar","save":"Guardar"},"save":"Guardar cambios","discard":"Descartar cambios","modalTitle":"Añadir habitaciones","modalAdd":"Añadir","roomTypeCount":"{name} ({count})","beds":{"SMALL_SINGLE":"Individual pequeña (80 x 180/190 cm)","STANDARD_SINGLE":"Individual estándar (90 x 190/200 cm)","TWIN_XL":"Plaza y media (105 x 190/200 cm)","DOUBLE":"Doble/matrimonial (135 x 190/200 cm)","STANDARD_MATRIMONIAL":"Matrimonial estándar (150 x 190/200 cm)","QUEEN":"Queen (150×200 / 160×200 cm)","KING_SIZE":"King size (180×200 / 200×200 cm)","PRESIDENTIAL_KING":"Presidential King (200×200 cm)","SOFA_BED":"Sofá cama","BUNK":"Litera","CRADLE":"Cuna"},"roomTypes":{"BEDROOM":"Dormitorio","STUDY":"Estudio","LIVING_ROOM":"Salón o sala de estar","DINING_ROOM":"Comedor"}},"extras":{"pageTitle":"Editar extras de {name}","description":"Selecciona qué extras pueden contratar las personas viajeras en esta unidad de alquiler.","manageLink":"Añadir, modificar o eliminar extras","noExtras":"No hay extras disponibles para esta unidad.","priceDescription":{"PEOPLE_DAY":"{price} por persona y día","UNITY_DAY":"{price} por unidad y día","UNITY":"{price} por unidad","SINGLE_PAYMENT":"{price} pago único"}}},"registration-owner":{"seo":{"title":"Publica tu alojamiento rural en EscapadaRural","description":"Da de alta tu alojamiento rural en EscapadaRural y llega a miles de personas que buscan reservar su próxima escapada rural."},"pageMeta":{"splitImageAlt":"Registro propietarios Escapadarural"},"title":"Regístrate y anuncia tu alojamiento rural","aside":{"title":"Publica tu alojamiento en EscapadaRural, el portal líder con más viajeros.","text1":"Con una sólida experiencia desde su inicio en 2007.","text2":"Asesoramiento de calida
1d y cercano.","text3":"2.000.000 de viajeros registrados.","text4":"Planes variados adaptados a tus necesidades."}},"registration-owner-how-to-register":{"seo":{"title":"¿Quieres publicar un alojamiento?"},"title":"¡Estás a un paso de anunciar tu primer alojamiento!","text":"Estás registrado como viajero, pero sí quieres publicar tu alojamiento es muy fácil.","button":"Publicar alojamiento"},"registration-traveler":{"seo":{"title":"Registro Viajero","description":"Regístrate y descubre las mejores casas para una experiencia rural, reserva un alojamiento, consulta tus mensajes y guarda tus favoritos. Disfruta de una experiencia de reserva rápida y sencilla para tu próxima escapada rural."},"pageMeta":{"splitImageAlt":"Registro Viajero Escapadarural"},"title":"Regístrate y empieza a disfrutar del turismo rural","aside":{"text1":"Parar.","text2":"Respirar.","text3":"Pensar.","text4":"Esto es una ventana a la vida en verde."}},"login":{"seo":{"title":"Inicia sesión","description":"Inicia sesión para ver tus mensajes y reservas, consultar tus alojamientos rurales favoritos, gestionar tus opiniones y tu perfil. Conéctate y empieza a planificar tu experiencia rural ideal."},"pageMeta":{"splitImageAlt":"Inicio sesión Escapadarural"},"aside":{"text1":"Parar.","text2":"Respirar.","text3":"Pensar.","text4":"Esto es una ventana a la vida en verde."}},"registration-traveler-optin":{"seo":{"title":"Alta comunicaciones"},"pageMeta":{"splitImageAlt":"Registro Viajero Escapadarural"},"aside":{"title":"Suscríbete a la newsletter de EscapadaRural y recibe:","text1":"Contenidos exclusivos.","text2":"Planes personalizados para tu escapada.","text3":"Ofertas y promociones especiales."}},"owner-cottage":{"description":{"meta":{"title":"Descripción"},"title":"Descripción de {name}","subtitle":"Describe tu alojamiento y explica a las personas viajeras los detalles de tu alojamiento y qué pueden ver o hacer en los alrededores.","fields":{"description":"Descripción de la casa","activities":"Actividades","interestingPlaces":"Lugares de interés","placeholder":"Escribe aquí"},"policyInfo":"Los cambios serán revisados por EscapadaRural para comprobar que se cumple la {link}","policyLink":"política de publicación.","policy":{"title":"Política de publicación","introTitle":"Política de publicación de establecimientos","intro":"Cuando te dispongas a realizar o modificar una ficha, deberías seguir las directrices que te indicamos a continuación:","rules":"No escribas en mayúsculas, salvo las siglas y las normas gramaticales.|El apartado 'Descripción' utilízalo exclusivamente para definir tu local.|No pongas en este apartado el enlace a tu web, redes sociales, el e-mail o precios.|Otros datos básicos como la dirección y el teléfono han de estar únicamente en los apartados destinados para ellos. Encontrarás campos específicos para la información básica.|Sube fotos de calidad y que estén relacionadas con tu establecimiento y su entorno.|Recuerda que los cambios no serán visibles hasta no haber sido revisados por el departamento de calida
1d. El plazo de validación es de 24 horas (días laborables).","suggestionsIntro":"Te recordamos, además, las siguientes sugerencias:","suggestions":"Publica información clara, relevante y auténtica.|Cuida la gramática y comprueba la ortografía.|Escribe textos claros y con párrafos bien diferenciados. Utiliza la puntuación.|Confirma tu ubicación en el apartado \\"Mapa\\", es importante para los viajeros saber tu localización exacta.|Revisa que las fotos que añadas tengan un tamaño y forma similar para que la ficha quede visualmente atractiva.","close":"Cerrar"},"save":"Guardar descripción","cancel":"Cancelar","updateSuccess":"Cambios realizados correctamente","updateError":"Ha ocurrido un error al guardar la descripción"},"map":{"meta":{"title":"Mapa"},"title":"Mapa de {name}","subtitle":"Modifica la posición arrastrando el punto.","fields":{"howToReach":"Cómo llegar","placeholder":"Describe a los viajeros como llegar a tu alojamiento."},"policyInfo":"Los cambios serán revisados por EscapadaRural para comprobar que se cumple la {link}","policyLink":"política de publicación.","save":"Guardar localización","cancel":"Cancelar","update":{"success":"Localización guardada correctamente","error":"Error al guardar la localización"}},"summary":{"meta":{"title":"Datos básicos"},"pageTitle":"Datos básicos de {name}","pageSubtitle":"Edita los datos básicos de esta unidad de alquiler.","sections":{"identity":"Sobre el alojamiento","online":"Enlaces y redes sociales","location":"Ubicación","contact":"Teléfonos de contacto"},"fields":{"cottageName":"Nombre del alojamiento","cottageNamePlaceholder":"Escribe aquí","cottageType":"Tipo de alojamiento","tourismRegistrationNumber":"Nº de registro en Turismo","tourismRegistrationNumberPlaceholder":"Ej: VT-123456","tourismRegistrationPending":"En trámites, todavía no lo tengo","tourismRegistrationHint":"Solo permitimos los alojamientos que estén registrados en Turismo o en su defecto, que tenga un documento en trámites. Envíanos una copia de tu documentación a {email}","tourismRegistrationHintEmail":"[email protected]","website":"Página web","websitePlaceholder":"https://www.mi-casa-rural.com","hasNoWebsite":"No tengo página web","socialNetworks":"Redes sociales","facebook":"Facebook","facebookPlaceholder":"Pon tu Facebook","twitterX":"X","twitterPlaceholder":"Pon tu X","instagram":"Instagram","instagramPlaceholder":"Pon tu Instagram","googleMapId":"Google Map ID de lugar","googleMapIdPlaceholder":"Ej: ChIJN1t_tDeuEmsRUsoyG83frY4","googleMapIdLink":"Cómo buscar el ID de un lugar en particular","address":"Dirección","addressPlaceholder":"Ej: C/ Gran Via, 12, 3º B","addressHint":"Si cambias la dirección, recuerda revisar tu posición en el {link}","addressHintLink":"mapa","postalCode":"Código Postal","postalCodePlaceholder":"Ej: 28001","village":"Población","province":"Provincia","phonePrefix":"Prefijo","phonePrincipal":"Teléfono principal","phoneOptional":"Teléfono (opcional)","phonePlaceholder":"Ej: 678987678","phoneLabel":"Teléfono {index}","phoneAdd":"+ Añadir teléfono","phoneRemove":"Eliminar teléfono","allowWhatsapp":"Recibir solicitudes de reserva por WhatsApp en este teléfono.","tourismRegistrationState":"Estado de registro en Turismo","tourismStateRegistered":"Registrado","tourismStateProceeding":"En trámites","tourismId":"Nº de registro en Turismo","tourismIdPlaceholder":"Ej: VT-123456","googlePlaceId":"Google Place ID","googlePlaceIdPlaceholder":"Ej: ChIJN1t_tDeuEmsRUsoyG83frY4","googlePlaceIdHelp":"Sirve para mostrar las opiniones de Google de tu alojamiento en la ficha.","googlePlaceIdHint":"{action}","googlePlaceIdLink":"Cómo buscar el ID de un lugar en particular","villageSearchPlaceholder":"Escribe el nombre de tu pueblo...","villageNotFoundHint":"¿No encuentras tu población? {action}","villageNotFoundLinkText":"Contacta con Customer Care","villageNotFoundLink":"mailto:[email protected]"},"actions":{"save":"Guardar datos básicos","cancel":"Cancelar","success":"Datos básicos guardados correctamente","error":"Ha ocurrido un error al guardar los datos básicos"}},"characteristics":{"meta":{"title":"Características"},"pageTitle":"Características de {name}","pageSubtitle":"Las personas viajeras buscan detalles concretos. 
1Cuantas más características completes, más fácil será encontrarte.","actions":{"save":"Guardar características","cancel":"Cancelar","success":"Características guardadas correctamente","error":"Ha ocurrido un error al guardar las características"},"certifications":{"sectionTitle":"Certificaciones oficiales","qDeCalidad":"Certificación de Q de Calidad.","estrellasVerdes":"Certificación Estrellas verdes.","stars":{"one":"1 Estrella","two":"2 Estrellas","three":"3 Estrellas","four":"4 Estrellas","five":"5 Estrellas"}},"selectedBadge":"{selected} / {total} seleccionados","footer":"Los cambios serán revisados por EscapadaRural para comprobar que se cumple la {link}.","footerLink":"política de publicación"},"prices":{"meta":{"title":"Precios"},"viewCottage":"Ver ficha","createButton":"Crear unidad alquilable","reorderButton":"Modificar orden","published":"Publicado","unpublished":"No publicado","averagePrice":"El {link} de {name} es de {price}","averagePriceLink":"precio medio","averagePriceModal":{"title":"Precio Medio","body":"El precio medio de tu alojamiento se calcula teniendo en cuenta el precio por persona por noche para cada una de tus unidades de alquiler y el precio definido en cada uno de los días de tu calendario en los próximos 6 meses."},"state":{"visible":"Publicado","invisible":"No publicado","pending":"Pendiente","deleted":"Eliminar","pendingNotice":"Termina la edición de esta unidad para publicarla.","updateSuccess":"Estado actualizado correctamente","updateError":"Error al actualizar el estado"},"deleteModal":{"title":"Eliminar unidad alquilable","body":"¿Estás seguro de que quieres eliminar esta unidad alquilable? Esta acción no se puede revertir.","cancel":"Cancelar","confirm":"Eliminar"}},"order":{"meta":{"title":"Unidades de Alquiler de {name} - EscapadaRural.com"},"card-title":"Modificar el orden de tus unidades alquilables","info":"Arrastra las unidades para cambiar su orden.","saveSuccess":"Orden guardado correctamente","saveError":"No se pudo guardar el orden. Inténtalo de nuevo"},"booking-conditions":{"meta":{"title":"Condiciones de reserva"},"title":"Condiciones de {name}","subtitle":"Configura las condiciones de reserva de tu alojamiento.","policyInfo":"Los cambios serán revisados por EscapadaRural para comprobar que se cumple la {link}","policyLink":"política de publicación.","advance":{"sectionTitle":"Anticipo para reservar","sectionDescription":"Establece la cantidad necesaria para asegurar la reserva directa.","options":{"none":"No se requiere pagar nada","fixed":"Pagar un importe fijo para reservar","percentage":"Pagar un porcentaje de la reserva"},"fields":{"fixedLabel":"Importe fijo:","percentageLabel":"Porcentaje de la reserva:"}},"cancellationPolicy":{"sectionTitle":"Política de cancelación","sectionDescription":"Flexibilidad ofrecida a los huéspedes si deciden cancelar su estancia.","options":{"noRefund":"No hay devoluciones","partialRefund":"Sí, hay alguna devolución bajo condiciones"},"fields":{"daysBeforeArrival":"Días antes de la llegada:","daysUnit":"Días","refundPercentage":"Porcentaje que se devuelve:"},"addTerm":"+ Añadir otro plazo"},"deposit":{"sectionTitle":"Fianza","sectionDescription":"Garantía para cubrir posibles daños materiales durante la reserva.","options":{"none":"No hay fianza","fixed":"Sí, hay fianza. (Importe fijo)","percentage":"Sí, hay fianza. (Porcentaje de la reserva)"},"fields":{"fixedLabel":"Importe de la fianza:","percentageLabel":"Porcentaje de la fianza:"}},"checkinCheckout":{"sectionTitle":"Horarios de entrada y salida","sectionDescription":"Especifica la franja horaria para el check-in y check-out.","fields":{"checkIn":"Entrada a partir de las","checkOut":"Salida antes de las","placeholder":"Sin especificar"}},"houseRules":{"sectionTitle":"Otras normas de la casa","sectionDescription":"Detalla reglas adicionales sobre mascotas, eventos, humo u horarios de silencio.","placeholder":"Escribe aquí cualquier norma o indicación importante para los viajeros..."},"actions":{"save":"Guardar condiciones","cancel":"Cancelar","saveSuccess":"Condiciones guardadas correctamente","saveError":"Ha ocurrido un error al guardar las condiciones"},"minimumAdvance":{"sectionTitle":"Antelación mínima","sectionDescription":"Nº mínimo de días de antelación que se requiere para aceptar una reserva.","fields":{"daysLabel":"Días de antelación mínima:","daysUnit":"Días","daysInfo":"Por ejemplo, si estableces 2 días y hoy es 14 de febrero, la fecha más próxima en la que los viajeros pueden solicitar una reserva es el 16 de febrero."}}}},"cottage-unique-register":{"meta":{"title":"Registro único"},"title":"Registro único","subtitle":"Obligatorio para propiedades de tipo casa (vivienda), apartamento o refugio. Los modelos de suscripción están exentos del registro único.","singleUnit":"Tengo una propiedad en esta ficha.","multipleUnits":"Tengo varias propiedades en esta ficha.","registrationNumber":"Nº registro único:","registrationNumber-title":"Introduce el número de registro único de tu propiedad","isPendingCheck":"Aún en trámites.","isPendingCheck-title":"Marca esta casilla si tu registro único está aún en trámites","isPedingValidation":"Debe tener mínimo 50 caracteres cuando está en trámites","save":"Guardar","aditionalInfo":{"title":"¡Atención!","text":"Para agregar el registro de turismo, por favor dirígete a la Pestaña de resumen de tu alojamiento.","link":"Pestaña de resumen"},"updateSuccess":"Cambios realizados correctamente"},"owner-rent-unit":{"policyInfo":"Los cambios serán revisados por EscapadaRural para comprobar que se cumple la {link}","policyLink":"política de publicación.","create":{"title":"Crear unidad de alquiler","copyLabel":"Crea una unidad copiando otra, para ir más rápido:","copyPlaceholder":"Selecciona la unidad a copiar ...","copyError":"No hemos podido copiar la unidad de alquiler. Vuelve a intentarlo","copySuccess":"Hemos copiado los datos de {name} en el formulario, ya puedes editarlo"},"edit":{"title":"Editar {name}","badge":"No publicada","badgePublished":"Publicada","basicInfo":{"title":"Información básica","childUnitsInfo":"Esta unidad contiene otras unidades dentro {names}. Están aquí porque también son alquilables por separado. Revisa que sea correcto.","parentUnitInfo":"Si esta unidad forma parte de un alojamiento que también se pueda alquilar entero, indícalo aquí.","editRooms":"Editar distribución de camas","fields":{"name":"Nombre","accommodationType":"Tipo de alojamiento","parentUnit":"Está dentro de otra unidad","parentUnitPlaceholder":"No","capacity":"C
1apacidad","capacityDescription":"Sin incluir camas supletorias o sofá cama","extraCapacity":"Plazas adicionales","extraCapacityDescription":"Sólo las plazas en cama supletoria o sofá cama","doubleBeds":"Camas de matrimonio","singleBeds":"Camas individuales","sofaBeds":"Sofás cama","extraBeds":"Camas supletorias","bathrooms":"Nº baños","description":"Descripción","descriptionHelper":"Ayuda a los viajeros/as a decidirse por esta unidad."}},"features":{"title":"Características","emptyAlert":"Añade las características de esta unidad de alquiler.","emptyAlertAction":"Añadir características","interior":"Interior","exterior":"Exterior"},"services":{"title":"Servicios","emptyAlert":"Añade los servicios de esta unidad de alquiler.","emptyAlertAction":"Añadir servicios"},"accessibility":{"title":"Accesibilidad","emptyAlert":"Añade la accesibilidad de esta unidad de alquiler.","emptyAlertAction":"Añadir"},"photos":{"title":"Fotos","select":"Seleccionar fotos","recommendation":"Te recomendamos seleccionar las más representativas de esta unidad.","imageAlt":"Imagen de la unidad"},"extraCapacityValidation":"Si hay plazas adicionales, debe haber al menos un sofá cama o una cama supletoria.","actions":{"success":"Unidad guardada correctamente","error":"Error al guardar la unidad, inténtalo de nuevo"},"cancel":"Cancelar","save":"Guardar cambios","saveAndEditPrices":"Guardar y editar precios"}},"owner-accommodations":{"meta":{"title":"Cuenta de propietario"},"title":"Alojamientos: Fichas contratadas","search":{"placeholder":"Buscar alojamiento por nombre"},"addNew":"+ Añadir nuevo alojamiento","cottage":{"link":"Ver alojamiento {name}","position":"Puesto","of":"de {total}.","province":"Provincia","qualityOfAttention":"Calidad de atención","moreInfo":"Más información","finalize":"Finalizar contratación","edit":"Editar","statistics":"Estadísticas","noInfo":"--","type":{"FREE":"(Pendiente aplicar servicio)","BASIC":"Ficha Básica","COMPLETE":"Ficha Completa","ADVANCED":"Ficha Avanzada","COMPLETE_PLUS":"Ficha Completa Plus","EXCLUSIVE":"Ficha Exclusiva"},"state":{"pending":"Pendiente de validar por EscapadaRural"}}},"traveler-messages":{"meta":{"title":"Mensajes"},"title":"Mensajes","info":{"title":"Bienvenido a tu buzón de mensajes","text":"Aquí aparecerán todas las conversaciones con las casas rurales de EscapadaRural.com"},"labels":{"cottage":"Alojamiento","message":"Mensaje","date":"Fecha"},"pagination":{"label":"Mostrando <b>{start}</b> a <b>{end}</b> de <b>{total}</b> resultados","next":"Siguientes","prev":"Anteriores"},"a11y":{"detail":"Ver Mensaje de {cottage}"}},"traveler-bookings":{"meta":{"title":"Reservas"},"summary":{"state":{"pending":"Pendiente de confirmación","completed":"Completada","confirmed":"Confirmada","cancelled":"Cancelada","cancelledTraveler":"Cancelada por mi","cancelledNonPayment":"Cancelada por impago"},"dateIn":"Entrada","dateOut":"Salida","nights":"Noches","people":"Personas"},"info":{"title":"Datos de la reserva","state":{"title":"Estado:","pending":"Pendiente de confirmación","completed":"Completada","confirmed":"Confirmada","cancelled":"Cancelada","cancelledTraveler":"Cancelada por mi","cancelledNonPayment":"Cancelada por impago"},"reference":"Referencia:","cancellation":{"title":"Política de cancelación:","noValue":"Este alojamiento no devuelve el anticipo.","values":{"date":"Hasta el { date }:","datePartial":"Hasta el { date }: { amount } (devolución parcial)","since":"Desde { date }: Sin devolución","totalAmount":"Cancelación gratuita","noAmount":"Sin devolución","sinceToday":"Desde hoy: Sin devolución"}},"deposit":{"title":"Fianza:","text":" { percent }% de la reserva (gestionado con el alojamiento)","noDeposit":"No se requiere fianza para reservar este alojamiento."},"total":"Total","taxes":"(impuestos incluidos)","details":"Ver detalles del precio","cancel":"Cancelar reserva","detailModal":{"detail":"Detalles del precio","units":"{n} unidad | {n} unidades","days":"{n} día | {n} días","people":"{n} persona | {n} personas","for":"por","inRentUnit":"en {rentUnit}","singlePayment":"Pago único en {rentUnit}","total":"Total","totalIva":"(impuestos incluidos)"}},"paymentInfo":{"title":"Información pagos","state":{"pending":"Previsto el { date }","completed":"Completado","error":"Error con el pago","refunded":"Reembolsado"},"managedBy":{"escapadarural":"Gestionado por EscapadaRural:","date":" (previsto el { date })","owner":"Gestionado con el alojamiento:","method":"Se realiza a través del método que acuerdes con el alojamiento."},"card":{"title":"Nº tarjeta:","number":"xxxxxxxxxxxx{last4}","edit":"Editar tarjeta"}},"rules":{"title":"Normas del alojamiento","noInformation":"No informada.","entrance":"Entrada:","departure":"Salida:","other":{"title":"Otras normas del alojamiento:","noInformation":"No informadas."}},"location":{"title":"Ubicación","localization":"Dirección: ","coordinates":{"title":"Coordenadas: ","text":"Latitud {latitude} - Longitud {longitude}"},"description":"Aclaraciones:"},"guests":{"meta":{"title":"Huéspedes"},"selectTitle":"Requerimiento legal","selectSubtitle":"Selecciona el país de residencia:","description":"Se requiere añadir el país de residencia de todos las personas del viaje. Puedes elegir el mismo país para todas las personas del viaje usando el botón de “Copiar a todos”.","form":{"personTitle":"Persona","countryLabel":"País de residencia","countryPlaceholder":"Selecciona un país","copyToAll":"C
1opiar a todos","submit":"Guardar cambios","error":"Ha habido un error al guardar la información, por favor inténtalo de nuevo."},"success":{"message":"Se están guardando los datos, en breve estarán procesados, muchas gracias por tu tiempo","viewButton":"Ver reserva"},"error":{"title":"Ha ocurrido un error al cargar la información. Por favor, inténtalo de nuevo más tarde."},"alreadyAdded":{"message":"Información completada.","viewButton":"Ver reserva"}},"countryResidence":{"title":"Requerimiento legal","subtitle":"País de residencia:","added":"Completado","pending":"Se requiere añadir el país de residencia de todos las personas del viaje antes del ","addButton":"Añadir país de residencia"},"cancel":{"title":"Cancelar reserva","alert":{"title":"Cancelar una reserva confirmada es un incumplimiento grave.","description":"Al cancelar, se te aplicará la comisión sobre el total de la reserva y se efectuará el reembolso al viajero."},"booking":{"accommodation":"Alojamiento:","dates":"Fechas:","payment":"Importe anticipo:","refund":"Devolución:","noRefund":"Sin devolución"},"form":{"reasonLegend":"Motivos de la cancelación:","otherReasonPlaceholder":"Escribe aquí otro motivo (obligatorio)","ownerReasonLabel":"Explica al alojamiento por qué cancelas:","ownerReasonPlaceholder":"Cuéntaselo aquí (opcional)"},"buttons":{"submit":"Confirmar cancelación","previous":"Anterior","next":"Siguiente"},"steps":{"reasons":"Motivos cancelación","message":"Mensaje al propietario"}}},"owner-bookings":{"meta":{"title":"Reservas"},"summary":{"mainTitle":"Datos de la reserva","state":{"title":"Estado:","pending":"Pendiente de confirmación","confirmed":"Reserva confirmada","completed":"Reserva finalizada","rejectedByTraveler":"Reserva rechazada por el viajero","rejectedByOwner":"Reserva rechazada por mí","rejectedExpired":"Reserva rechazada automáticamente","cancelledByTraveler":"Reserva cancelada por el viajero","cancelledByOwner":"Reserva cancelada por mí","cancelledByER":"Reserva cancelada por Escapadarural","cancelledNonPayment":"Reserva cancelada por impago"},"accommodation":"Alojamiento:","reference":"Referencia:","dateIn":"Entrada:","dateOut":"Salida:","nights":"Noches:","people":"Personas:","cancel":"Cancelar reserva","message":{"toOwner":"Mensaje del viajero:","toTraveler":"Tu mensaje al viajero:","showMore":"Ver mensaje"}},"banner":{"timeToExpire":"Tienes { hours }h { minutes }m para responder antes de la cancelación automática.","actions":{"confirm":"Confirmar","reject":"Rechazar"},"rejected":{"blockedDates":"Las fechas siguen bloqueadas tras 24h sin respuesta. Puedes desbloquearlas en tu calendario.","unblockedDates":"Las fechas ya no están bloqueadas."},"ownerBlocked":{"blockedDates":"Tus fechas siguen bloqueadas, puedes liberarlas manualmente. Sincroniza tus calendarios para mantener tu disponibilidad al día automáticamente.","calendarLink":"Sincronizar calendario"}},"info":{"confirmationModal":{"title":"Confirmar reserva","description":"Gracias por confirmar tu reserva con EscapadaRural. Las fechas quedarán bloqueadas y enviaremos una confirmación de reserva al viajero.","dates":"Fechas:","accommodation":"Alojamiento:","totalReserve":"Total reserva:","placeholder":"Escribe aquí el mensaje al viajero (opcional)","placeholder-title":"Añade un mensaje para el viajero","max":"Te quedan {n} caracteres","buttonExit":"Volver","buttonConfirm":"Confirmar reserva"}},"paymentInfo":{"title":"Información de pagos","bookingAmount":"Importe reserva:","advanceAmount":"Importe anticipo:","directPayment":"Pago directo con el cliente:","generatedBusiness":"Negocio generado:","generatedBusinessSub":"Importe de la reserva o compensación según política de cancelación.","commission":"Comisión:","commissionAmount":"Importe comisión:","accountTransfer":"Transferencia a tu cuenta:","accountTransferSub":"Diferencia entre anticipo y comisión.","transferDate":"Fecha transferencia:","transferDateNone":"n/a","contractedExtras":"Extras contratados:","extrasSubtotal":"Subtotal extras:","noExtras":"No se han seleccionado extras para esta reserva.","extras":{"people":"{n} persona | {n} personas","days":"{n} día | {n} días","units":"{n} unidad | {n} unidades","singlePayment":"Pago único"}},"traveler":{"title":"Datos de quien viaja","contact":"Contactar con el viajero","since":"En EscapadaRural desde { year }"},"rules":{"conditionsTitle":"Condiciones de esta reserva","advance":{"title":"Anticipo:","text":"Pagar un porcentaje de la reserva para reservar ({ percent }%)."},"deposit":{"title":"Fianza:","text":"{ percent }% de la reserva (gestionado con el alojamiento)","noDeposit":"No se requiere fianza para esta reserva.","noOnline":"(no se paga online)"},"cancellation":{"title":"Política de cancelación:","values":{"until":"Hasta el { date }:","from":"Desde el { date }:","free":"Cancelación gratuita","partialRefund":"{ amount } (devolución parcial)","noRefund":"Sin devolución","noAmount":"Este alojamiento no devuelve el anticipo."}},"title":"Normas del alojamiento","noInformation":"No informada.","entrance":"Entrada:","departure":"Salida:","other":{"title":"Otras normas del alojamiento:","noInformation":"No informadas."}}},"traveler-bookings-edit":{"meta":{"title-edit":"Editar Método de pago","title-pay":"Actualiza tu información de pago"},"panel-pay":"Hubo un problema con tu pago de { amount }. Introduce un método de pago válido para mantener tu reserva.","title-edit":"Editar Método de pago","title-pay":"Actualiza tu información de pago","bookingConditions":"He leído y acepto las condiciones de la reserva de este alojamiento.","submit-edit":"Guardar","submit-pay":"Pagar { amount } y confirmar","info":"Tu pago seguro a través de la plataforma Stripe","modal
1-success":{"title":"Cambios guardados correctamente","return":"Volver"},"error":"Ha habido un error, por favor vuelve a introducir los datos.","error-stripe-backend":"No hemos podido verificar tu método de pago, por favor utiliza otro o vuelve a intentarlo.","error-backend":"Ha habido un error, por favor vuelve a introducir los datos.","error-critical":"No hemos podido verificar tu método de pago, por favor utiliza otro o vuelve a intentarlo.","error-not-editable":"Este método de pago ya no puede ser editado.","seeDetail":"Ver mi reserva"}}`),landings:{home:{seo:{title:`EscapadaRural | Reserva la casa rural para tu escapada`,description:`【Reserva tu casa rural】➜ Escapada rural con ✓familia ✓amigos ✓pareja. Descubre un destino rural y reserva alojamiento rural con ✓piscina ✓jacuzzi ✓barbacoa.`,"image-alt":`Reserva tu Escapada Rural`},hero:{title:`Reserva tu Escapada Rural`},"featured-destinations":{title:`Las mejores escapadas rurales`},"best-cottages":{title:`Las mejores casas rurales`,button:`Ver todos los alojamientos`,"card-price-average-text":` pers./noche (aprox.)`,"card-button":`Ver alojamiento`},deals:{title:`Ofertas y descuentos`,button:`Ver todas las ofertas`,discount:`-{number}% descuento `,nights:`{nights} noches: del {dateIn} al {dateOut}`,people:`{number} personas ({price} pers./noche)`,"old-price":`Ahora {price} `,"new-price":`/ antes {price}`,"card-button":`Ver oferta`},"featured-searches":{title:`Lo más buscado`},reviews:{title:`Los alojamientos que prefieren los viajeros`},seoLinks:{regions:{title:`Escapadas rurales por comunidad autónoma`},provinces:{title:`Alojamientos rurales por provincia`},villages:{title:`Pueblos favoritos para visitar`}}},"escapadas-list":{"seo-title":`Alojamientos para una escapada rural`,title:`Escapadas en España`,description:`【 Los mejores alojamientos para una escapada 】➜ Casas rurales ✓Románticas,  para el ✓Verano , con ✓Spa, a tu medida.`,subtitle:`Elige tu escapada`},holidays:{seo:{title:`Alojamientos para las vacaciones en { name }`,description:`【 Los mejores alojamientos para tus vacaciones en { name } 】➜ Casas en { name } con ✓Piscina o para ✓Viajar con tu perro. ✓Vacaciones en familia`,schema:`Últimas opiniones en { name }`},hero:{title:`Vacaciones en `,button:`Ver todos los alojamientos`},banner:{title:`Explora el encanto rural y aprovecha las ofertas en casas para tus vacaciones en { name }`,"button-text":`Ver ofertas`,alt:`Vacaciones en { name }`},links:{title:`Otras sugerencias de vacaciones`},reviews:{title:`Últimas opiniones en { name }`}},"holidays-list":{seo:{title:`Alojamientos para las vacaciones en España`,description:`【 Los mejores alojamientos para tus vacaciones 】➜ Casas con ✓Piscina o para ✓Viajar con tu perro. ✓Vacaciones en familia`},title:`Vacaciones en España`,subtitle:`Elige tu destino`},villages:{seo:{title:`Pueblos en { name }`,description:`【 Información turística de los pueblos de {name} 】➜ Conoce toda la información para viajar a los pueblos de {name}`},title:`Pueblos de {name}`,description:`Descubre los pueblos y lugares para visitar en {name} y encuentra información y alojamiento para tu escapada rural.`,cottages:`Alojamientos en {name}`,posts:{title:`Pueblos para visitar en {name}`},links:{title:`Información turística de los pueblos`,description:`Información turística sobre {number} pueblos de la província de {name} ordenados por casas rurales disponibles para tu escapada.`,link:`Encontrar alojamiento`}},"villages-list":{seo:{title:`Pueblos de España`,description:`Información turística sobre 17.960 pueblos distribuidos por toda la geografía española.`},title:`Guía de pueblos de España`,description:`Información turística sobre 17.960 pueblos distribuidos por toda la geografía española.`},"escapadas-branding":{seo:{title:`EscapadaRural | Cualquier escapada rural, en escapadarural.com`,description:`Reserva aquí tu escapada rural. Descubre destinos para visitar con amigos, familia o en pareja y alojamientos ideales con piscina, barbacoa, jardín.`,"image-alt":`Reserva aquí tu escapada rural`},hero:{title:`Reserva ya tu escapada rural`}},"owner-campaign":{terms:{label:`Al hacer clic, declaras que aceptas y conoces las {useConditions} y la {privacyPolicy}.`,useConditions:`Condiciones de uso`,privacyPolicy:`Política de privacidad`}}},zodI18n:{errors:{invalid_type_received_undefined:`Campo obligatorio`,invalid_string:{email:`El correo electrónico tiene un formato incorrecto`},too_small:{string:{inclusive:`El texto debe tener al menos {minimum} caracteres`},number:{inclusive:`El número debe ser mayor o igual a {minimum}`}},too_big:{string:{inclusive:`Este campo debe tener menos de { maximum } caracteress`},number:{inclusive:`El número debe ser menor o igual a {maximum}`}}}},a11y:{"favorite-button":`Boton de Favoritos`,close:`Cerrar`,options:`Ver opciones`,"show-password":`Ver contraseña`,unlink:`Desvincular`,edit:`Editar`,delete:`Eliminar`,tab:`Elegir pestaña`,menu:`Me
1nu`,"open-menu":`Abrir menu`},zodI18nCustom:{invalid_phone:`Teléfono no válido`,invalid_url:`URL no válida`,invalid_password_min:`La contraseña debe tener al menos {n} caracteres`,invalid_password_max:`La contraseña debe tener menos de {n} caracteres`,empty_field:`Campo obligatorio`,invalid_youtube_url:`La URL debe ser un enlace de YouTube válido (youtu.be/... o youtube.com/watch?v=...)`,generic_repeat:`Los campos no coinciden`,email_repeat:`Los emails no coinciden`},error:{0:`Ha habido un error. Prueba otra vez o contáctanos.`,1:`Ya existe un alojamiento con ese nombre en esta provincia. ¿Quizás ya lo diste de alta antes? Revisa {myProperties} o cambia el nombre aquí.`,400:`Ha habido un error. Prueba otra vez.`,403:`Lo sentimos, no tienes los permisos para realizar la solicitud.`,3e3:`Datos de inicio de sesión incorrectos. Puedes definir una nueva contraseña.`,3002:`E-mail no registrado. Completa tu registro como viajero para poder iniciar sesión.`,4e3:`E-mail con formato incorrecto.`,4001:`Los e-mails no coinciden.`,4002:`Nombre o apellido con formato incorrecto.`,4003:`Contraseña con formato incorrecto.`,4004:`Google reCAPTCHA incorrecto.`,4005:`Ha habido un error. Prueba otra vez o contáctanos.`,4006:`Ha habido un error. Prueba otra vez o contáctanos.`,4007:`Ya existe un usuario con ese e-mail.`,4008:`Ha habido un error al crear el usuario. Prueba otra vez.`,4009:`Debes aceptar las condiciones de uso para registrarte.`,4012:`Teléfono con formato incorrecto.`,5001:`Foto demasiado pequeña.`,1e4:`Ha habido un error. Prueba otra vez o contáctanos.`,10001:`Tu email parece ser incorrecto. Por favor corrígelo e inténtalo de nuevo.`,10002:`Tu teléfono parece ser incorrecto. Por favor corrígelo e inténtalo de nuevo.`,10003:`Algo está mal con el mensaje que escribiste. Por favor corrígelo e inténtalo de nuevo.`,page:{title:`Ups, algo ha fallado`,subtitle:`{ code } ERROR`,text:`Perdona, no hemos encontrado la página que buscabas.`,backHome:`Vuelve a la home`},title:`Ups, algo ha fallado`,validation:{too_small:`Este campo es obligatorio`,too_big:`Este campo debe tener menos de { maximum } caracteres`,invalid_literal:`Valor no válido`,invalid_string:`Email no válido`,custom:`Este campo no es válido`},actions:{contact:`Contáctanos`,rememberPassword:`Definir contraseña`,travelerRegistration:`Completar registro`}},vitest:{test00:`test00`,test01:`test01 {0}`},enums:{cottageType:{COTTAGE:`Casa/Vivienda`,HOTEL:`Hotel/Hostal`,APARTMENT:`Apartamento`,HOSTEL:`Albergue`,CAMPING:`Camping`,REFUGE:`Refugio`},tourismRegistrationState:{ISREGISTERED:`Está registrado`,PROCEEDING:`En proceso`},customerLegalCountry:{_belgium:`Bélgica`,_germany:`Alemania`,_spain:`España`,_france:`Francia`,_portugal:`Portugal`,_unitedKingdom:`Reino Unido`,_unitedStates:`Estados Unidos`}},ecommerceB2b:{steps:{accommodation:`Sobre el alojamiento`,configuration:`Planes y datos fiscales`,payment:`Pasarela de pago`,publish:`Publicar alojamiento`,stepOf:`Paso {current} de {total}`,step:`Paso {current}`,prev:`Anterior`,next:`Continuar`,mobileProgress:`{current} de {total}: {title}`,descriptions:{accommodation:`Pasos del 1 al 6`,configuration:`Pasos del 6 al 7`,payment:`Paso 8`,publish:`Paso final`}},legalTaxData:{title:`Tus datos fiscales`,subtitle:` Introduce tus datos fiscales y declara que la información es correcta.`,tabs:{entity:`Soy empresa`,individual:`Soy persona física`},otherProvince:`Otra`,legalEntity:{name:`Razón social`,namePlaceholder:`Escribe aquí el nombre de tu empresa`,nif:`NIF`,nifPlaceholder:`Ej: B-12345678`,address:`Dirección principal`,addressPlaceholder:`Ej: C/ Gran Via, 12, 3º B`,village:`Localidad / Ciudad`,villagePlaceholder:`Escribe una opción`,province:`Provincia`,provincePlaceholder:`Selecciona una opción`,zip:`Código postal`,zipPlaceholder:`Ej: 09811`,country:`País`,countryPlaceholder:`Selecciona un país`,companyRegister:`Nº registro de la empresa`,companyRegisterPlaceholder:`Ej: ESB12345678`,confirmation:`Declaro que todos y cada uno de los datos son correctos y verídicos`},legalIndividual:{firstName:`Nombre`,firstNamePlaceholder:`Escribe aquí tu nombre`,lastName:`Apellidos`,lastNamePlaceholder:`Escribe aquí tu apellido`,birthDate:`Fecha de nacimiento`,nif:`DNI`,nifPlaceholder:`Ej: 12345678Z`,address:`Dirección principal`,addressPlaceholder:`Ej: C/ Gran Via, 12, 3º B`,village:`Localidad / Ciudad`,villagePlaceholder:`Escribe una opción`,province:`Provincia`,provincePlaceholder:`Selecciona una opción`,zip:`Código postal`,zipPlaceholder:`Ej: 09811`,country:`País`,countryPlaceholder:`Selecciona un país`,confirmation:`Declaro que todos y cada uno de los datos son correctos y verídicos`},edit:{cancel:`Cancelar`,save:`Guardar y continuar`,successTitle:`Cambios recibidos. Los datos modificados serán visibles en unos minutos.`,errorTitle:`Algo no ha ido bien, por favor, vuelve a intentarlo.`}}
1,newCottage:{title:`Nuevo alojamiento`,intro:{title:`¡Bienvenido/a a EscapadaRural!`,description:`Completarás el registro en 7 pasos. Después, accederás a tu panel para configurar precios y unidades antes de publicar.`,cta:`¡Vamos allá!`},cottageName:{name:`Nombre del alojamiento`,placeholder:`Escribe aquí`},village:{name:`Población`,placeholder:`Escribe tu población.`,noResults:`¿No encuentras el lugar? Pulsa aquí para indicar la provincia.`},province:{name:`Provincia`,placeholder:`Selecciona una opción`},postalCode:{name:`Código postal`,placeholder:`Ej: 28001`},address:{name:`Dirección`,placeholder:`Empieza a escribir tu dirección`},latitude:{name:`Latitud`,placeholder:`Ej: 40.4168`},longitude:{name:`Longitud`,placeholder:`Ej: -3.7038`},stepLocation:{searchPlaceholder:`Empieza a escribir tu dirección`,addressNotFound:`¿No aparece tu dirección? Añádela manualmente`,resolveError:`No se ha podido resolver la ubicación. Por favor, inténtalo de nuevo o añade la dirección manualmente.`,addManually:`¿No aparece tu dirección? Añádela manualmente.`,backToSuggestions:`Buscar dirección por sugerencias.`,addressLabel:`Dirección principal`,villageLabel:`Localidad / Ciudad`,submit:`Continuar`},cottageType:`Tipo de alojamiento`,phone:{prefixLabel:`Prefijo`,prefixPlaceholder:`+34`,numberLabel:`Teléfono principal`,numberPlaceholder:`Ej: 678987678`},tourismRegistrationState:`Estado del número de registro turístico`,noTourismRegistration:`No tengo número de registro`,duplicateName:{myPropertiesLink:`tus alojamientos`},tourismRegistrationAlert:{title:`El número de registro turístico es obligatorio.`,description:`Obtén el número de registro turístico para  poder crear una alojamiento en EscapadaRural.`},tourismRegistrationItems:{yes:{label:`Tengo el número de registro.`,description:`Mi alojamiento está registrado y tengo la documentación que lo acredita.`},inProgress:{label:`Está en proceso.`,description:`Me comprometo a enviar la documentación cuando termine la tramitación.`},no:{label:`No tengo el número de registro`,description:`Aún no lo he tramitado.`}},submit:`Crear alojamiento`,stepCoordinates:{hint:`Ajusta el pin en el mapa para confirmar la ubicación exacta de tu alojamiento.`},steps:{step1:{title:`¿Cómo se llama tu alojamiento?`,description:`Dale un nombre a tu alojamiento para que los viajeros puedan encontrarlo.`},step2:{title:`¿Dónde está tu alojamiento?`,description:`Añade la dirección completa donde se encuentra tu alojamiento.`},step3:{title:`¿Dónde está tu alojamiento?`,description:`Confirma la ubicación en el mapa. Mueve el icono si la ubicación no es precisa. Mover el icono no cambiará tu dirección.`},step4:{title:`¿Qué tipo de alojamiento es?`,description:`Selecciona la categoría que mejor describe tu alojamiento.`},step5:{title:`Teléfono del alojamiento`,description:`Confirma el teléfono que verán los viajeros`},step6:{title:`¿Tienes el número de registro turístico?`,description:`Es un identificador obligatorio en España para alquilar viviendas de uso turístico o de temporada.`}}},"contact-form":{title:`¿Tienes alguna duda?`,description:`Te asesoramos sin compromiso.`,button:`¿Te llamamos?`,success:`¡Te llamamos pronto!`,alternative:`O también puedes:`,phone:`Llamarnos`,help:`Ayuda`,helpCenter:`Llama al 935 958 665`,modalTitle:`¿Quieres más información?`,modalDescription:`Deja tus datos de contacto y te llamaremos lo antes posible.`,name:`Nombre`,namePlaceholder:`Escribe aquí tu nombre`,email:`E-mail`,emailPlaceholder:`Escribe aquí tu e-mail`,phoneLabel:`Teléfono`,phonePlaceholder:`Escribe aquí tu teléfono`,confirmation:{label:`Al hacer clic, declaras que aceptas y conoces las {useConditions} y la {privacyPolicy}.`,useConditions:`Condiciones de uso`,privacyPolicy:`Política de privacidad`},phonePrefixLabel:`Prefijo`,error:`Ha ocurrido un error al enviar el formulario. Por favor, inténtalo de nuevo.`},payment:{title:`Información de pago`,description:`Revisa tu pedido y añade los detalles de tu tarjeta para empezar a recibir reservas.`,titleSummary:`Detalles del pedido`,cottageName:`Alojamiento`,serviceDetail:`Servicio`,price:`Subtotal`,securePayment:`Tu pago seguro a través de la plataforma Stripe.`,success:{title:`Pago confirmado`,body:`¡Es hora de dar vida a tu alojamiento!`,nextSteps:`Completa tu anuncio y empieza a recibir reservas:`,step1:`1. Crea tus unidades de alquiler.`,step2:`2. Define tus precios y disponibilidad.`,ctaButton:`Completar mi anuncio ahora`,orderSummary:`Resumen del pedido`,serviceDetail:`Servicio`,cottageName:`Alojamiento`,transactionId:`ID de Transacción`},submit:`Pagar`,confirmAndPay:`Confirmar y pagar {amount}`,stripeLoadError:`No se ha podido cargar el formulario de pago. Por favor, recarga la página.`,payError:`Ha habido un problema al procesar el pago. Por favor, inténtalo de nuevo.`,confirmError:`No hemos podido registrar tu método de pago. Por favor, inténtalo de nuevo. Si el problema persiste, contáctanos`,contactUs:`Contáctanos`,vat:`IVA {rate}%`,total:`Total`},footer:{legal:{conditions:`Términos y Condiciones`,accessibility:`Accesibilidad`}}
1}};function t(e,t){return t.split(`.`).reduce((e,t)=>e?e[t]:void 0,e)}var n=(n,r,...i)=>{let a=t(e,n);if(typeof a!=`string`)return n;let o=a;if(r&&typeof r==`object`&&!Array.isArray(r)?Object.entries(r).forEach(([e,t])=>{let n=RegExp(`\\{\\s*${e}\\s*\\}`,`g`);o=o.replace(n,String(t))}):r!==void 0&&[r,...i].forEach((e,t)=>{let n=RegExp(`\\{\\s*${t}\\s*\\}`,`g`);o=o.replace(n,String(e))}),typeof r==`number`){let e=RegExp(`\\{\\s*n\\s*\\}`,`g`);o=o.replace(e,String(r))}if(o.includes(`|`)){let e=o.split(`|`).map(e=>e.trim()),t;if(r&&typeof r==`object`&&!Array.isArray(r)?t=r.n??r[0]:r!==void 0&&(t=Number(r)),typeof t==`number`){let n=new Intl.PluralRules(`es-ES`).select(t);o=e[[`one`,`other`].indexOf(n)]??e[0]}}return o},r;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(r||={});var i;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(i||={});var a=r.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),o=e=>{switch(typeof e){case`undefined`:return a.undefined;case`string`:return a.string;case`number`:return Number.isNaN(e)?a.nan:a.number;case`boolean`:return a.boolean;case`function`:return a.function;case`bigint`:return a.bigint;case`symbol`:return a.symbol;case`object`:return Array.isArray(e)?a.array:e===null?a.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?a.promise:typeof Map<`u`&&e instanceof Map?a.map:typeof Set<`u`&&e instanceof Set?a.set:typeof Date<`u`&&e instanceof Date?a.date:a.object;default:return a.unknown}},s=r.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),c=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){let n=i.path[r];r===i.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(this),n}static assert(t){if(!(t instanceof e))throw Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,r.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=e=>e.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};c.create=e=>new c(e);var l=(e,t)=>
vendor: 28,380 bytes, line 1
1{let n;switch(e.code){case s.invalid_type:n=e.received===a.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case s.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,r.jsonStringifyReplacer)}`;break;case s.unrecognized_keys:n=`Unrecognized key(s) in object: ${r.joinValues(e.keys,`, `)}`;break;case s.invalid_union:n=`Invalid input`;break;case s.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${r.joinValues(e.options)}`;break;case s.invalid_enum_value:n=`Invalid enum value. Expected ${r.joinValues(e.options)}, received '${e.received}'`;break;case s.invalid_arguments:n=`Invalid function arguments`;break;case s.invalid_return_type:n=`Invalid function return type`;break;case s.invalid_date:n=`Invalid date`;break;case s.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:r.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case s.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case s.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case s.custom:n=`Invalid input`;break;case s.invalid_intersection_types:n=`Intersection results could not be merged`;break;case s.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case s.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,r.assertNever(e)}return{message:n}},ee=l;function te(e){ee=e}function u(){return ee}var d=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function f(e,t){let n=u(),r=d({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===l?void 0:l].filter(e=>!!e)});e.common.issues.push(r)}var p=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return m;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return m;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},m=Object.freeze({status:`aborted`}),h=e=>({status:`dirty`,value:e}),g=e=>({status:`valid`,value:e}),ne=e=>e.status===`aborted`,re=e=>e.status===`dirty`,_=e=>e.status===`valid`,v=e=>typeof Promise<`u`&&e instanceof Promise,y;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(y||={});var b=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},ie=(e,t)=>{if(_(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new c(e.common.issues);return this._error=t,this._error}}};function x(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var S=class{get description(){return this._def.description}_getType(e){return o(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:o(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new p,ctx:{common:e.parent.common,data:e.data,parsedType:o(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(v(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:o(e)};return ie(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:o(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return _(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>_(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:o(e)},r=this._parse({data:e,path:n.path,parent:n});return ie(n,await(v(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:s.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new q({schema:this,typeName:$.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return J.create(this,this._def)}nullable(){return Y.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return M.create(this)}promise(){return K.create(this,this._def)}or(e){return F.create([this,e],this._def)}and(e){return R.create(this,e,this._def)}transform(e){return new q({...x(this._def),schema:this,typeName:$.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new X({...x(this._def),innerType:this,defaultValue:t,typeName:$.ZodDefault})}brand(){return new Re({typeName:$.ZodBranded,type:this,...x(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new Z({...x(this._def),innerType:this,catchValue:t,typeName:$.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return ze.create(this,e)}readonly(){return Q.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},ae=/^c[^\s-]{8,}$/i,oe=/^[0-9a-z]+$/,se=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ce=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,le=/^[a-z0-9_-]{21}$/i,ue=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,de=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,fe=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,pe=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,me,he=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ge=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,_e=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,ve=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,ye=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,be=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,xe=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,Se=RegExp(`^${xe}$`);function Ce(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function we(e){return RegExp(`^${Ce(e)}$`)}function Te(e){let t=`${xe}T${Ce(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function Ee(e,t){return!((t!==`v4`&&t||!he.test(e))&&(t!==`v6`&&t||!_e.test(e)))}function De(e,t){if(!ue.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function Oe(e,t){return!((t!==`v4`&&t||!ge.test(e))&&(t!==`v6`&&t||!ve.test(e)))}var C=class e extends S{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==a.string){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.string,received:t.parsedType}),m}let t=new p,n;for(let i of this._def.checks)if(i.kind===`min`)e.data.length<i.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:s.too_small,minimum:i.value,type:`string`,inclusive:!0,exact:!1,message:i.message}),t.dirty());else if(i.kind===`max`)e.data.length>i.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:s.too_big,maximum:i.value,type:`string`,inclusive:!0,exact:!1,message:i.message}),t.dirty());else if(i.kind===`length`){let r=e.data.length>i.value,a=e.data.length<i.value;(r||a)&&(n=this._getOrReturnCtx(e,n),r?f(n,{code:s.too_big,maximum:i.value,type:`string`,inclusive:!0,exact:!0,message:i.message}):a&&f(n,{code:s.too_small,minimum:i.value,type:`string`,inclusive:!0,exact:!0,message:i.message}),t.dirty())}else if(i.kind===`email`)fe.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`email`,code:s.invalid_string,message:i.message}),t.dirty());else if(i.kind===`emoji`)me||=new RegExp(pe,`u`),me.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`emoji`,code:s.invalid_string,message:i.message}),t.dirty());else if(i.kind===`uuid`)ce.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`uuid`,code:s.invalid_string,message:i.message}),t.dirty());else if(i.kind===`nanoid`)le.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`nanoid`,code:s.invalid_string,message:i.message}),t.dirty());else if(i.kind===`cuid`)ae.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`cuid`,code:s.invalid_string,message:i.message}),t.dirty());else if(i.kind===`cuid2`)oe.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`cuid2`,code:s.invalid_string,message:i.message}),t.dirty());else if(i.kind===`ulid`)se.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`ulid`,code:s.invalid_string,message:i.message}),t.dirty());else if(i.kind===`url`)try{new URL(e.data)}catch{n=this._getOrReturnCtx(e,n),f(n,{validation:`url`,code:s.invalid_string,message:i.message}),t.dirty()}else i.kind===`regex`?(i.regex.lastIndex=0,i.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`regex`,code:s.invalid_string,message:i.message}),t.dirty())):i.kind===`trim`?e.data=e.data.trim():i.kind===`includes`?e.data.includes(i.value,i.position)||(n=this._getOrReturnCtx(e,n),f(n,{code:s.invalid_string,validation:{includes:i.value,position:i.position},message:i.message}),t.dirty()):i.kind===`toLowerCase`?e.data=e.data.toLowerCase():i.kind===`toUpperCase`?e.data=e.data.toUpperCase():i.kind===`startsWith`?e.data.startsWith(i.value)||(n=this._getOrReturnCtx(e,n),f(n,{code:s.invalid_string,validation:{startsWith:i.value},message:i.message}),t.dirty()):i.kind===`endsWith`?e.data.endsWith(i.value)||(n=this._getOrReturnCtx(e,n),f(n,{code:s.invalid_string,validation:{endsWith:i.value},message:i.message}),t.dirty()):i.kind===`datetime`?Te(i).test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{code:s.invalid_string,validation:`datetime`,message:i.message}),t.dirty()):i.kind===`date`?Se.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{code:s.invalid_string,validation:`date`,message:i.message}),t.dirty()):i.kind===`time`?we(i).test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{code:s.invalid_string,validation:`time`,message:i.message}),t.dirty()):i.kind===`duration`?de.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`duration`,code:s.invalid_string,message:i.message}),t.dirty()):i.kind===`ip`?Ee(e.data,i.version)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`ip`,code:s.invalid_string,message:i.message}),t.dirty()):i.kind===`jwt`?De(e.data,i.alg)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`jwt`,code:s.invalid_string,message:i.message}),t.dirty()):i.kind===`cidr`?Oe(e.data,i.version)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`cidr`,code:s.invalid_string,message:i.message}),t.dirty()):i.kind===`base64`?ye.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`base64`,code:s.invalid_string,message:i.message}),t.dirty()):i.kind===`base64url`?be.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:`base64url`,code:s.invalid_string,message:i.message}),t.dirty()):r.assertNever(i);return{status:t.value,value:e.data}}_regex(e,t,n){return this.refinement(t=>e.test(t),{validation:t,code:s.invalid_string,...y.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...y.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...y.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...y.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...y.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...y.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...y.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...y.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...y.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...y.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...y.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...y.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...y.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...y.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...y.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...y.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...y.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...y.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...y.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...y.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...y.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...y.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...y.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...y.errToObj(t)})}nonempty(e){return this.min(1,y.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};C.create=e=>new C({checks:[],typeName:$.ZodString,coerce:e?.coerce??!1,...x(e)});function ke(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var w=class e extends S{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==a.number){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.number,received:t.parsedType}),m}let t,n=new p;for(let i of this._def.checks)i.kind===`int`?r.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),f(t,{code:s.invalid_type,expected:`integer`,received:`float`,message:i.message}),n.dirty()):i.kind===`min`?(i.inclusive?e.data<i.value:e.data<=i.value)&&(t=this._getOrReturnCtx(e,t),f(t,{code:s.too_small,minimum:i.value,type:`number`,inclusive:i.inclusive,exact:!1,message:i.message}),n.dirty()):i.kind===`max`?(i.inclusive?e.data>i.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),f(t,{code:s.too_big,maximum:i.value,type:`number`,inclusive:i.inclusive,exact:!1,message:i.message}),n.dirty()):i.kind===`multipleOf`?ke(e.data,i.value)!==0&&(t=this._getOrReturnCtx(e,t),f(t,{code:s.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):i.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),f(t,{code:s.not_finite,message:i.message}),n.dirty()):r.assertNever(i);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,y.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,y.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,y.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,y.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:y.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:y.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:y.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:y.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:y.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:y.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:y.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:y.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:y.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:y.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind===`int`||e.kind===`multipleOf`&&r.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.value<e)&&(e=n.value);return Number.isFinite(t)&&Number.isFinite(e)}};w.create=e=>new w({checks:[],typeName:$.ZodNumber,coerce:e?.coerce||!1,...x(e)});var T=class e extends S{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==a.bigint)return this._getInvalidInput(e);let t,n=new p;for(let i of this._def.checks)i.kind===`min`?(i.inclusive?e.data<i.value:e.data<=i.value)&&(t=this._getOrReturnCtx(e,t),f(t,{code:s.too_small,type:`bigint`,minimum:i.value,inclusive:i.inclusive,message:i.message}),n.dirty()):i.kind===`max`?(i.inclusive?e.data>i.value:e.data>=i.value)&&(t=this._getOrReturnCtx(e,t),f(t,{code:s.too_big,type:`bigint`,maximum:i.value,inclusive:i.inclusive,message:i.message}),n.dirty()):i.kind===`multipleOf`?e.data%i.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),f(t,{code:s.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):r.assertNever(i);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.bigint,received:t.parsedType}),m}gte(e,t){return this.setLimit(`min`,e,!0,y.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,y.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,y.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,y.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:y.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:y.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:y.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:y.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:y.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:y.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};T.create=e=>new T({checks:[],typeName:$.ZodBigInt,coerce:e?.coerce??!1,...x(e)});var Ae=class extends S{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==a.boolean){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.boolean,received:t.parsedType}),m}return g(e.data)}};Ae.create=e=>new Ae({typeName:$.ZodBoolean,coerce:e?.coerce||!1,...x(e)});var je=class e extends S{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==a.date){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.date,received:t.parsedType}),m}if(Number.isNaN(e.data.getTime()))return f(this._getOrReturnCtx(e),{code:s.invalid_date}),m;let t=new p,n;for(let i of this._def.checks)i.kind===`min`?e.data.getTime()<i.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:s.too_small,message:i.message,inclusive:!0,exact:!1,minimum:i.value,type:`date`}),t.dirty()):i.kind===`max`?e.data.getTime()>i.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:s.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:`date`}),t.dirty()):r.assertNever(i);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:y.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:y.toString(t)})}
vendor: 20,398 bytes, line 1
1get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e==null?null:new Date(e)}};je.create=e=>new je({checks:[],coerce:e?.coerce||!1,typeName:$.ZodDate,...x(e)});var Me=class extends S{_parse(e){if(this._getType(e)!==a.symbol){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.symbol,received:t.parsedType}),m}return g(e.data)}};Me.create=e=>new Me({typeName:$.ZodSymbol,...x(e)});var E=class extends S{_parse(e){if(this._getType(e)!==a.undefined){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.undefined,received:t.parsedType}),m}return g(e.data)}};E.create=e=>new E({typeName:$.ZodUndefined,...x(e)});var D=class extends S{_parse(e){if(this._getType(e)!==a.null){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.null,received:t.parsedType}),m}return g(e.data)}};D.create=e=>new D({typeName:$.ZodNull,...x(e)});var O=class extends S{constructor(){super(...arguments),this._any=!0}_parse(e){return g(e.data)}};O.create=e=>new O({typeName:$.ZodAny,...x(e)});var k=class extends S{constructor(){super(...arguments),this._unknown=!0}_parse(e){return g(e.data)}};k.create=e=>new k({typeName:$.ZodUnknown,...x(e)});var A=class extends S{_parse(e){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.never,received:t.parsedType}),m}};A.create=e=>new A({typeName:$.ZodNever,...x(e)});var j=class extends S{_parse(e){if(this._getType(e)!==a.undefined){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.void,received:t.parsedType}),m}return g(e.data)}};j.create=e=>new j({typeName:$.ZodVoid,...x(e)});var M=class e extends S{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==a.array)return f(t,{code:s.invalid_type,expected:a.array,received:t.parsedType}),m;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.length<r.exactLength.value;(e||i)&&(f(t,{code:e?s.too_big:s.too_small,minimum:i?r.exactLength.value:void 0,maximum:e?r.exactLength.value:void 0,type:`array`,inclusive:!0,exact:!0,message:r.exactLength.message}),n.dirty())}if(r.minLength!==null&&t.data.length<r.minLength.value&&(f(t,{code:s.too_small,minimum:r.minLength.value,type:`array`,inclusive:!0,exact:!1,message:r.minLength.message}),n.dirty()),r.maxLength!==null&&t.data.length>r.maxLength.value&&(f(t,{code:s.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new b(t,e,t.path,n)))).then(e=>p.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new b(t,e,t.path,n)));return p.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:y.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:y.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:y.toString(n)}})}nonempty(e){return this.min(1,e)}};M.create=(e,t)=>new M({type:e,minLength:null,maxLength:null,exactLength:null,typeName:$.ZodArray,...x(t)});function N(e){if(e instanceof P){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=J.create(N(r))}return new P({...e._def,shape:()=>t})}return e instanceof M?new M({...e._def,type:N(e.element)}):e instanceof J?J.create(N(e.unwrap())):e instanceof Y?Y.create(N(e.unwrap())):e instanceof z?z.create(e.items.map(e=>N(e))):e}var P=class e extends S{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=r.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==a.object){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.object,received:t.parsedType}),m}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),o=[];if(!(this._def.catchall instanceof A&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||o.push(e);let c=[];for(let e of i){let t=r[e],i=n.data[e];c.push({key:{status:`valid`,value:e},value:t._parse(new b(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof A){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of o)c.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)o.length>0&&(f(n,{code:s.unrecognized_keys,keys:o}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of o){let r=n.data[t];c.push({key:{status:`valid`,value:t},value:e._parse(new b(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of c){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>p.mergeObjectSync(t,e)):p.mergeObjectSync(t,c)}get shape(){return this._def.shape()}strict(t){return y.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:y.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:$.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of r.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of r.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return N(this)}partial(t){let n={};for(let e of r.objectKeys(this.shape)){let r=this.shape[e];n[e]=t&&!t[e]?r:r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of r.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof J;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return Ie(r.objectKeys(this.shape))}};P.create=(e,t)=>new P({shape:()=>e,unknownKeys:`strip`,catchall:A.create(),typeName:$.ZodObject,...x(t)}),P.strictCreate=(e,t)=>new P({shape:()=>e,unknownKeys:`strict`,catchall:A.create(),typeName:$.ZodObject,...x(t)}),P.lazycreate=(e,t)=>new P({shape:e,unknownKeys:`strip`,catchall:A.create(),typeName:$.ZodObject,...x(t)});var F=class extends S{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new c(e.ctx.common.issues));return f(t,{code:s.invalid_union,unionErrors:n}),m}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new c(e));return f(t,{code:s.invalid_union,unionErrors:i}),m}}get options(){return this._def.options}};F.create=(e,t)=>new F({options:e,typeName:$.ZodUnion,...x(t)});var I=e=>e instanceof H?I(e.schema):e instanceof q?I(e.innerType()):e instanceof U?[e.value]:e instanceof W?e.options:e instanceof G?r.objectValues(e.enum):e instanceof X?I(e._def.innerType):e instanceof E?[void 0]:e instanceof D?[null]:e instanceof J?[void 0,...I(e.unwrap())]:e instanceof Y?[null,...I(e.unwrap())]:e instanceof Re||e instanceof Q?I(e.unwrap()):e instanceof Z?I(e._def.innerType):[],Ne=class e extends S{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==a.object)return f(t,{code:s.invalid_type,expected:a.object,received:t.parsedType}),m;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(f(t,{code:s.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),m)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=I(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:$.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...x(r)})}};function L(e,t){let n=o(e),i=o(t);if(e===t)return{valid:!0,data:e};if(n===a.object&&i===a.object){let n=r.objectKeys(t),i=r.objectKeys(e).filter(e=>n.indexOf(e)!==-1),a={...e,...t};for(let n of i){let r=L(e[n],t[n]);if(!r.valid)return{valid:!1};a[n]=r.data}return{valid:!0,data:a}}if(n===a.array&&i===a.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=L(i,a);if(!o.valid)return{valid:!1};n.push(o.data)}return{valid:!0,data:n}}return n===a.date&&i===a.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}var R=class extends S{_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=(e,r)=>{if(ne(e)||ne(r))return m;let i=L(e.value,r.value);return i.valid?((re(e)||re(r))&&t.dirty(),{status:t.value,value:i.data}):(f(n,{code:s.invalid_intersection_types}),m)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};R.create=(e,t,n)=>new R({left:e,right:t,typeName:$.ZodIntersection,...x(n)});var z=class e extends S{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==a.array)return f(n,{code:s.invalid_type,expected:a.array,received:n.parsedType}),m;if(n.data.length<this._def.items.length)return f(n,{code:s.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),m;!this._def.rest&&n.data.length>this._def.items.length&&(f(n,{code:s.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new b(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>p.mergeArray(t,e)):p.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};z.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new z({items:e,typeName:$.ZodTuple,rest:null,...x(t)})};var Pe=class e extends S{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==a.object)return f(n,{code:s.invalid_type,expected:a.object,received:n.parsedType}),m;let r=[],i=this._def.keyType,o=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new b(n,e,n.path,e)),value:o._parse(new b(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?p.mergeObjectAsync(t,r):p.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof S?new e({keyType:t,valueType:n,typeName:$.ZodRecord,...x(r)}):new e({keyType:C.create(),valueType:t,typeName:$.ZodRecord,...x(n)})}},B=class extends S{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==a.map)return f(n,{code:s.invalid_type,expected:a.map,received:n.parsedType}),m;let r=this._def.keyType,i=this._def.valueType,o=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new b(n,e,n.path,[a,`key`])),value:i._parse(new b(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of o){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return m;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}{let e=new Map;for(let n of o){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return m;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};B.create=(e,t,n)=>new B({valueType:t,keyType:e,typeName:$.ZodMap,...x(n)});var V=class e extends S{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==a.set)return f(n,{code:s.invalid_type,expected:a.set,received:n.parsedType}),m;let r=this._def;r.minSize!==null&&n.data.size<r.minSize.value&&(f(n,{code:s.too_small,minimum:r.minSize.value,type:`set`,inclusive:!0,exact:!1,message:r.minSize.message}),t.dirty()),r.maxSize!==null&&n.data.size>r.maxSize.value&&(f(n,{code:s.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function o(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return m;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let c=[...n.data.values()].map((e,t)=>i._parse(new b(n,e,n.path,t)));return n.common.async?Promise.all(c).then(e=>o(e)):o(c)}min(t,n){return new e({...this._def,minSize:{value:t,message:y.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:y.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};V.create=(e,t)=>new V({valueType:e,minSize:null,maxSize:null,typeName:$.ZodSet,...x(t)});var Fe=class e extends S{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==a.function)return f(t,{code:s.invalid_type,expected:a.function,received:t.parsedType}),m;function n(e,n){return d({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,u(),l].filter(e=>!!e),issueData:{code:s.invalid_arguments,argumentsError:n}})}function r(e,n){return d({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,u(),l].filter(e=>!!e),issueData:{code:s.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},o=t.data;if(this._def.returns instanceof K){let e=this;return g(async function(...t){let a=new c([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw a.addIssue(n(t,e)),a}),l=await Reflect.apply(o,this,s);return await e._def.returns._def.type.parseAsync(l,i).catch(e=>{throw a.addIssue(r(l,e)),a})})}{let e=this;return g(function(...t){let a=e._def.args.safeParse(t,i);if(!a.success)throw new c([n(t,a.error)]);let s=Reflect.apply(o,this,a.data),l=e._def.returns.safeParse(s,i);if(!l.success)throw new c([r(s,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:z.create(t).rest(k.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||z.create([]).rest(k.create()),returns:n||k.create(),typeName:$.ZodFunction,...x(r)})}},H=class extends S{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};H.create=(e,t)=>new H({getter:e,typeName:$.ZodLazy,...x(t)});var U=class extends S{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return f(t,{received:t.data,code:s.invalid_literal,expected:this._def.value}),m}return{status:`valid`,value:e.data}}get value(){return this._def.value}};U.create=(e,t)=>new U({value:e,typeName:$.ZodLiteral,...x(t)});function Ie(e,t){return new W({values:e,typeName:$.ZodEnum,...x(t)})}var W=class e extends S{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return f(t,{expected:r.joinValues(n),received:t.parsedType,code:s.invalid_type}),m}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return f(t,{received:t.data,code:s.invalid_enum_value,options:n}),m}return g(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};W.create=Ie;var G=class extends S{_parse(e){let t=r.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==a.string&&n.parsedType!==a.number){let e=r.objectValues(t);return f(n,{expected:r.joinValues(e),received:n.parsedType,code:s.invalid_type}),m}if(this._cache||=new Set(r.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=r.objectValues(t);return f(n,{received:n.data,code:s.invalid_enum_value,options:e}),m}return g(e.data)}get enum(){return this._def.values}};G.create=(e,t)=>new G({values:e,typeName:$.ZodNativeEnum,...x(t)});var K=class extends S{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==a.promise&&t.common.async===!1?(f(t,{code:s.invalid_type,expected:a.promise,received:t.parsedType}),m):g((t.parsedType===a.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};K.create=(e,t)=>new K({type:e,typeName:$.ZodPromise,...x(t)});var q=class extends S{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===$.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),i=this._def.effect||null,a={addIssue:e=>{f(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(a.addIssue=a.addIssue.bind(a),i.type===`preprocess`){let e=i.transform(n.data,a);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return m;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?m:r.status===`dirty`||t.value===`dirty`?h(r.value):r});{if(t.value===`aborted`)return m;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?m:r.status===`dirty`||t.value===`dirty`?h(r.value):r}}if(i.type===`refinement`){let e=e=>{let t=i.refinement(e,a);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?m:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?m:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(i.type===`transform`){if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!_(e))return m;let r=i.transform(e.value,a);if(r instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:r}}return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>_(e)?Promise.resolve(i.transform(e.value,a)).then(e=>({status:t.value,value:e})):m)}r.assertNever(i)}};
vendor: 4,368 bytes, line 1
1q.create=(e,t,n)=>new q({schema:e,typeName:$.ZodEffects,effect:t,...x(n)}),q.createWithPreprocess=(e,t,n)=>new q({schema:t,effect:{type:`preprocess`,transform:e},typeName:$.ZodEffects,...x(n)});var J=class extends S{_parse(e){return this._getType(e)===a.undefined?g(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};J.create=(e,t)=>new J({innerType:e,typeName:$.ZodOptional,...x(t)});var Y=class extends S{_parse(e){return this._getType(e)===a.null?g(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Y.create=(e,t)=>new Y({innerType:e,typeName:$.ZodNullable,...x(t)});var X=class extends S{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===a.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};X.create=(e,t)=>new X({innerType:e,typeName:$.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...x(t)});var Z=class extends S{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return v(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new c(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new c(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};Z.create=(e,t)=>new Z({innerType:e,typeName:$.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...x(t)});var Le=class extends S{_parse(e){if(this._getType(e)!==a.nan){let t=this._getOrReturnCtx(e);return f(t,{code:s.invalid_type,expected:a.nan,received:t.parsedType}),m}return{status:`valid`,value:e.data}}};Le.create=e=>new Le({typeName:$.ZodNaN,...x(e)});var Re=class extends S{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},ze=class e extends S{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?m:e.status===`dirty`?(t.dirty(),h(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?m:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:$.ZodPipeline})}},Q=class extends S{_parse(e){let t=this._def.innerType._parse(e),n=e=>(_(e)&&(e.value=Object.freeze(e.value)),e);return v(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};Q.create=(e,t)=>new Q({innerType:e,typeName:$.ZodReadonly,...x(t)});function Be(e,t){let n=typeof e==`function`?e(t):typeof e==`string`?{message:e}:e;return typeof n==`string`?{message:n}:n}function Ve(e,t={},n){return e?O.create().superRefine((r,i)=>{let a=e(r);if(a instanceof Promise)return a.then(e=>{if(!e){let e=Be(t,r),a=e.fatal??n??!0;i.addIssue({code:`custom`,...e,fatal:a})}});if(!a){let e=Be(t,r),a=e.fatal??n??!0;i.addIssue({code:`custom`,...e,fatal:a})}}):O.create()}P.lazycreate;var $;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})($||={});var He=C.create,Ue=w.create;Le.create,T.create;var We=Ae.create;je.create,Me.create,E.create;
1var Ge=D.create,Ke=O.create;k.create,A.create,j.create;var qe=M.create,Je=P.create;P.strictCreate,F.create;var Ye=Ne.create;R.create;var Xe=z.create;Pe.create,B.create,V.create,Fe.create,H.create;var Ze=U.create,Qe=W.create;G.create,K.create,q.create,J.create,Y.create;var $e=q.createWithPreprocess;ze.create,te((e,t)=>{if(e.code===s.invalid_type&&e.received===`undefined`)return{message:n(`zodI18n.errors.invalid_type_received_undefined`)};if(e.code===s.too_small){if(e.type===`number`&&e.minimum)return{message:n(`zodI18n.errors.too_small.number.inclusive`,{minimum:e.minimum})};if(e.minimum)return{message:n(`zodI18n.errors.too_small.string.inclusive`,{minimum:e.minimum})}}if(e.code===s.too_big){if(e.type===`number`&&e.maximum)return{message:n(`zodI18n.errors.too_big.number.inclusive`,{maximum:e.maximum})};if(e.maximum)return{message:n(`zodI18n.errors.too_big.string.inclusive`,{maximum:e.maximum})}}return e.code===s.invalid_literal?{message:n(`zodI18nCustom.empty_field`)}:e.code===s.invalid_string&&e.validation===`email`?{message:n(`zodI18n.errors.invalid_string.email`)}:{message:t.defaultError}});export{n as _,We as a,Qe as c,Ue as d,Je as f,s as g,Xe as h,qe as i,Ze as l,He as m,Y as n,Ve as o,$e as p,Ke as r,Ye as s,q as t,Ge as u};
2//# sourceMappingURL=-lRF3DUq.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.