@seatlayer/core 0.57.0 → 0.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-AQKYUJBX.js → chunk-4BVXDBFE.js} +1 -1
- package/dist/{chunk-6VTTBC5F.js → chunk-66HGMU7D.js} +1 -1
- package/dist/chunk-GHJUDU3U.js +1 -0
- package/dist/{chunk-55NOSZK5.js → chunk-IRFG5DVH.js} +1 -1
- package/dist/{chunk-PXWKSYCK.js → chunk-N4CBOQFB.js} +1 -1
- package/dist/{chunk-7PT7OQUO.js → chunk-PMU3VPNK.js} +1 -1
- package/dist/core/chart-ops/index.js +1 -1
- package/dist/core/inventory/index.cjs +1 -1
- package/dist/core/inventory/index.js +1 -1
- package/dist/core/layout/index.cjs +1 -1
- package/dist/core/layout/index.js +1 -1
- package/dist/core/sections/index.cjs +1 -1
- package/dist/core/sections/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/view3d/index.cjs +25 -20
- package/dist/view3d/index.js +18 -13
- package/package.json +1 -1
- package/dist/chunk-VDZ24QVV.js +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var vi=Object.defineProperty;var gs=Object.getOwnPropertyDescriptor;var ys=Object.getOwnPropertyNames;var Ss=Object.prototype.hasOwnProperty;var ki=(t,e,i)=>()=>{if(i)throw i[0];try{return t&&(e=t(t=0)),e}catch(n){throw i=[n],n}};var Rt=(t,e)=>{for(var i in e)vi(t,i,{get:e[i],enumerable:!0})},vs=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ys(e))!Ss.call(t,r)&&r!==i&&vi(t,r,{get:()=>e[r],enumerable:!(n=gs(e,r))||n.enumerable});return t};var ks=t=>vs(vi({},"__esModule",{value:!0}),t);var cs={};Rt(cs,{es:()=>El});var El,ds=ki(()=>{"use strict";El={"common.cancel":"Cancelar","common.close":"Cerrar","common.done":"Listo","common.copied":"\u2713 Copiado","picker.holdExpired":"Tu retenci\xF3n expir\xF3 \u2014 los asientos fueron liberados. Elige de nuevo.","picker.poweredBy":"Con la tecnolog\xEDa de SeatLayer","picker.testMode":"MODO DE PRUEBA","picker.orphanHint":"Esto deja un asiento aislado \u2014 considera desplazarte un asiento.","picker.companionRequiresWheelchair":"Requiere la plaza accesible contigua","picker.companionPairRequired":"Selecciona la plaza accesible contigua con cada entrada de acompa\xF1ante.","map.aria":"Mapa de asientos. Usa las flechas para moverte entre asientos, Intro para seleccionar.","map.seatsLeft":"{count} LIBRES","map.soldOut":"AGOTADO","map.statusHeld":"En espera","map.statusTaken":"Ocupado","map.fromPrice":"DESDE {price}","picker.floor":"Piso","picker.zoomLevel":"Nivel de zoom","picker.rungTip.zones":"Vista general \u2014 grupos de secciones como Grada norte o VIP","picker.rungTip.sections":"Bloques de secci\xF3n \u2014 las secciones agotadas y casi llenas se aten\xFAan para ver la disponibilidad de un vistazo","picker.rungTip.seats":"Asientos individuales \u2014 los bloques se convierten en puntos","picker.rungLabel.zones":"ZONAS","picker.rungLabel.sections":"SECCIONES","picker.rungLabel.seats":"ASIENTOS","picker.sectionSummaryAria":"Resumen de secci\xF3n {label}","picker.closeSectionSummary":"Cerrar resumen de secci\xF3n","picker.seatsLeftInSection.one":"{count} asiento disponible","picker.seatsLeftInSection.other":"{count} asientos disponibles","picker.overview":"Descripci\xF3n general","picker.entrance":"Entrada","picker.tapSeatHint":"Toca cualquier asiento para ver su vista","picker.ticketTierFor":"Categor\xEDa de entrada para {label}","picker.viewFromSeat":"Vista desde el asiento {label}","picker.real360":"REAL 360\xB0","picker.preview":"VISTA PREVIA","picker.sightline":"\u2248 {m} m al escenario","picker.panorama360":"Foto de 360\xB0 del lugar","picker.illustrationCaption":"ilustraci\xF3n \xB7 \u2248 {m} m del escenario","picker.restrictedView":"Visibilidad restringida","picker.obstructedView":"Visibilidad obstruida","picker.premiumSeat":"Asiento premium","picker.hideLimitedView":"Ocultar asientos con visibilidad limitada","picker.bestSeatsPremium":"Mejores asientos","picker.premiumFallbackNote":"No hay un bloque premium de {count}: mostrando los mejores disponibles","picker.loading3d":"Creando el recinto en 3D\u2026","picker.unavailable3d":"No se pudo iniciar la vista 3D. El mapa de asientos sigue disponible.","picker.jumpToSection":"Ir a una secci\xF3n","picker.salesClosedPill":"Las ventas est\xE1n cerradas","picker.salesClosedCopy":"La venta de entradas para este evento ha finalizado.","picker.salesClosedCta":"Venta cerrada","picker.salesClosedToast":"Las ventas de este evento est\xE1n cerradas.","picker.holdReassurance":"Tuyos durante {time} \u2014 a\xFAn no se te cobrar\xE1 nada.","picker.securingSeats":"Asegurando tus asientos\u2026","picker.openingCheckout":"Abriendo el pago seguro\u2026","picker.peekSecured":"\u2713 {count} asegurados \xB7 {total} \u2014 a\xFAn no se te cobrar\xE1 nada","picker.priceHint":"Los colores del plano son tipos de entrada \u2014 toca uno abajo para ver solo esos asientos.","picker.findTogetherInstead":"Buscar asientos juntos en su lugar","picker.keepMyPicks":"Mantener mi selecci\xF3n","picker.accessExpiredBody":"Vuelve a iniciar sesi\xF3n o recarga la p\xE1gina para seguir viendo estos asientos. Lo que ya tengas retenido seguir\xE1 siendo tuyo.","picker.accessExpiredTitle":"Tu sesi\xF3n de acceso ha finalizado","picker.accessInvalidBody":"A\xFAn puedes reservar todo lo que aparezca como disponible. Contacta a quien te envi\xF3 este enlace para acceder al resto.","picker.accessInvalidTitle":"No pudimos verificar tu acceso","picker.accessPausedBody":"El organizador ha pausado esta selecci\xF3n. Int\xE9ntalo de nuevo en unos minutos.","picker.accessPausedTitle":"Estos asientos est\xE1n retenidos en este momento","picker.accessRetry":"Intentar de nuevo","picker.accessRevokedBody":"Pide a quien te envi\xF3 aqu\xED un nuevo enlace para seguir reservando estos asientos.","picker.accessRevokedTitle":"Este enlace de acceso ya no est\xE1 activo","picker.accessiblePhysicalSeat":"Asiento f\xEDsico accesible","picker.addTime":"A\xF1adir tiempo","picker.addingEllipsis":"A\xF1adiendo\u2026","picker.allLevels":"Todos los niveles","picker.allPlacesBookedTogether":"Los {count} lugares se reservan juntos como una mesa exclusiva.","picker.allPrices":"Todos los precios","picker.allSeats":"Todos los asientos","picker.allSetTitle":"Todo listo","picker.anyTicketType":"Cualquier tipo de entrada","picker.anyVenueZone":"Cualquier zona del recinto","picker.areas":"Zonas","picker.available":"Disponible","picker.backToMap":"Volver al mapa","picker.backToVenue":"Volver al recinto","picker.bestSeatsStar":"\u2726 Mejores asientos","picker.booth":"Palco","picker.capacityGuests":"{count} invitados","picker.change":"Cambiar","picker.chartDerivedModel":"Modelo derivado del plano","picker.chartDerivedSeatEye":"3D en vivo \xB7 vista desde el asiento derivada del plano \xB7 no verificada","picker.checkConnection":"Comprueba tu conexi\xF3n e int\xE9ntalo de nuevo.","picker.checkoutCouldNotBeOpened":"No se pudo abrir el pago. Tus asientos siguen retenidos \u2014 int\xE9ntalo de nuevo.","picker.chooseAnotherToCompare":"Elige otro asiento para comparar.","picker.chooseGuestsCopy":"Elige cu\xE1ntos invitados se sentar\xE1n juntos. Esta mesa est\xE1 reservada en exclusiva para tu grupo.","picker.chooseMinMaxGuests":"Elige entre {min} y {max} invitados","picker.clearSavedSeatComparison":"Borrar comparaci\xF3n de asientos guardada","picker.close":"Cerrar","picker.closeSeatStatus":"Cerrar estado del asiento","picker.closestGroupChosenInstantly":"El grupo disponible m\xE1s cercano, elegido al instante.","picker.collapseTicketPanel":"Contraer el panel de entradas","picker.compareCount":"Comparar {count}","picker.compareWithSaved":"Comparar con el guardado","picker.confirmOrCancelSeat":"Confirma o cancela este asiento","picker.confirmSeatLabel":"Confirmar asiento {label}","picker.confirmYourTable":"Confirma tu mesa","picker.confirmedAndOnWay":"confirmados. Una confirmaci\xF3n est\xE1 en camino.","picker.continue":"Continuar","picker.continueToCheckout":"Continuar al pago","picker.couldNotAddMoreTime":"No se pudo a\xF1adir m\xE1s tiempo \u2014 dir\xEDgete al pago ahora.","picker.couldNotFindSeatsTogether":"No pudimos encontrar {count} asientos juntos. Prueba con menos asientos u otro tipo de entrada.","picker.couldNotReleaseTickets":"No se pudieron liberar tus entradas. Tu retenci\xF3n no ha cambiado.","picker.couldNotRemoveLabel":"No se pudo quitar {label}. Tu retenci\xF3n no ha cambiado.","picker.currentOffer":"Oferta actual","picker.currentTicketOffer":"Oferta de entradas actual","picker.dragToLookAround":"Arrastra para mirar alrededor \xB7 despl\xE1zate para hacer zoom","picker.emptyWheelchairSpace":"Espacio vac\xEDo para silla de ruedas","picker.exitFullScreen":"Salir de pantalla completa","picker.fewer":"Menos","picker.fewerGuests":"Menos invitados","picker.fewerSeats":"Menos asientos","picker.filterAndFocusByPrice":"Filtrar y enfocar asientos por precio","picker.filters":"Filtros","picker.findBestSeatsCount.one":"Buscar {count} mejor asiento","picker.findBestSeatsCount.other":"Buscar {count} mejores asientos","picker.findBestSeatsTogether":"Buscar los mejores asientos juntos","picker.findNewSeats":"Buscar nuevos asientos","picker.findingBestSeats":"Buscando los mejores asientos\u2026","picker.findingEllipsis":"Buscando\u2026","picker.fitToScreen":"Ajustar a la pantalla","picker.flat2dMap":"Mapa plano 2D","picker.flexiblePartyTypeWord":"Grupo flexible \xB7 {typeWord}","picker.fullScreen":"Pantalla completa","picker.generalAdmission":"Entrada general","picker.guestCountCouldNotBeSecured":"No se pudo asegurar ese n\xFAmero de invitados. Tu retenci\xF3n de mesa actual no ha cambiado.","picker.guestCountNoLongerAvailable":"Ese n\xFAmero de invitados ya no est\xE1 disponible. Tu retenci\xF3n actual no ha cambiado.","picker.guests":"Invitados","picker.guestsCount":"{count} invitados","picker.guestsCountEdit":"{count} invitados \xB7 Editar","picker.held":"Retenido","picker.heldForYou":"Retenido para ti","picker.heldSeatExplanation":"Otro comprador est\xE1 reteniendo este asiento. Puede volver a estar disponible.","picker.heldTicketsReleased":"Se liberaron las entradas retenidas. Elige tus nuevos asientos.","picker.heldTicketsRestored":"Tus entradas retenidas se han restaurado.","picker.hidePanel":"Ocultar panel","picker.hideTicketPanel":"Ocultar el panel de entradas","picker.holdSeatsAndCheckout":"Retener asientos y pagar","picker.howOfferWorks":"C\xF3mo funciona la oferta \xAB{name}\xBB","picker.interactive3dVenueView":"Vista 3D interactiva del recinto","picker.keepMine":"Mantener los m\xEDos","picker.labelNoLongerAvailable":"{label} ya no est\xE1 disponible.","picker.labelRemoved":"{label} eliminado.","picker.labelRemovedFromHold":"{label} eliminado de tu retenci\xF3n.","picker.labelRestored":"{label} restaurado.","picker.labelsNoLongerAvailable.one":"{labels} ya no est\xE1 disponible. Elige otro asiento.","picker.labelsNoLongerAvailable.other":"{labels} ya no est\xE1n disponibles. Elige otro grupo.","picker.leftCount.one":"quedan {count}","picker.leftCount.other":"quedan {count}","picker.levelNumber":"Nivel {number}","picker.levels":"Niveles","picker.liveAvailability":"Disponibilidad en vivo \u2014 los asientos se actualizan en tiempo real","picker.loadingSeatMap":"Cargando el mapa de asientos\u2026","picker.lookAroundLive3d":"Mirar alrededor en 3D en vivo","picker.manualTicketsRemovedNote":"Tus entradas seleccionadas manualmente solo se eliminar\xE1n una vez que se asegure un nuevo grupo.","picker.map":"Mapa","picker.mapDidNotLoad":"El mapa de asientos no se pudo cargar","picker.maxTicketsForOrder":"Puedes seleccionar hasta {count} entradas para este pedido.","picker.selectExactMore":"Selecciona {count} m\xE1s","picker.selectExactCount":"Selecciona exactamente {count} entradas","picker.selectMinimumMore":"Selecciona {count} m\xE1s","picker.adjustSeatSelection":"Ajusta la selecci\xF3n de asientos","picker.selectSeatsTogether":"Elige asientos juntos en la misma fila y categor\xEDa.","picker.minToMaxGuests":"De {min} a {max} invitados","picker.more":"M\xE1s","picker.moreGuests":"M\xE1s invitados","picker.moreSeats":"M\xE1s asientos","picker.moreSelectedCount":"{count} m\xE1s seleccionados","picker.moreTimeAdded":"Se a\xF1adi\xF3 m\xE1s tiempo \u2014 tus asientos siguen retenidos.","picker.noAccessibilityMetadata":"No hay informaci\xF3n de accesibilidad disponible","picker.noAuthoredRestriction":"Sin restricci\xF3n indicada por el organizador","picker.noSeatsSelected":"Ning\xFAn asiento seleccionado","picker.notChargedYet":"A\xFAn no se te cobrar\xE1 nada.","picker.notForSale":"No est\xE1 a la venta","picker.notForSaleExplanation":"Este asiento no est\xE1 incluido en la venta actual.","picker.numberOfGuests":"N\xFAmero de invitados","picker.offerDetailActive":"Este precio se aplica autom\xE1ticamente a los asientos elegibles. Las entradas en carritos activos reducen temporalmente la cantidad disponible; las retenciones liberadas o vencidas la devuelven. Cuando la oferta termine, se aplicar\xE1 la siguiente oferta coincidente o el precio normal de la entrada.","picker.offerDetailUpcoming":"Las entradas est\xE1n disponibles ahora a su precio normal. Esta oferta programada se aplicar\xE1 autom\xE1ticamente a los asientos elegibles cuando comience.","picker.offerRemainingAvailable":"{count} disponibles","picker.offerStarts":"comienza {time}","picker.offerUntil":"hasta {time}","picker.oneSeatSaved":"1 asiento guardado","picker.oneSeatSavedChooseAnother":"Un asiento guardado; elige otro para comparar","picker.openAuthored360":"Abrir vista 360\xB0 del recinto","picker.openComparison":"Abrir comparaci\xF3n","picker.openComparisonOfSeats":"Abrir comparaci\xF3n de {count} asientos","picker.openTicketPanel":"Abrir el panel de entradas","picker.peekFromPrice":"Desde {price}","picker.peekTicketsTotal.one":"{count} entrada \xB7 {total}","picker.peekTicketsTotal.other":"{count} entradas \xB7 {total}","picker.perGuestPrice":"{price} por invitado","picker.pickYourSeats":"Elige tus asientos","picker.preferredTicketType":"Tipo de entrada preferido","picker.preferredVenueZone":"Zona del recinto preferida","picker.priceNotSupplied":"Precio no indicado","picker.releaseHeldTickets":"Liberar entradas retenidas y elegir otros asientos","picker.releasingEllipsis":"Liberando\u2026","picker.removeHeldTicketLabel":"Quitar entrada retenida {label}","picker.removeSeatLabel":"Quitar {label}","picker.removeTicketsUntilOrFewer":"Quita entradas hasta que tu pedido tenga {count} o menos.","picker.replaceCurrentChoices":"\xBFReemplazar tu selecci\xF3n actual?","picker.review":"Revisar","picker.row":"Fila","picker.rowLabel":"Fila {label}","picker.saveToCompare":"Guardar para comparar","picker.savedForComparison":"Guardado para comparar","picker.savedSeatComparison":"Comparaci\xF3n de asientos guardada","picker.scheduledOffer":"Oferta programada","picker.seat":"Asiento","picker.seatCount.one":"{count} asiento","picker.seatCount.other":"{count} asientos","picker.seatJustTakenByAnother":"El asiento {label} acaba de ser tomado por otro comprador.","picker.seatLabel":"Asiento {label}","picker.seatNoLongerAvailable":"Ese asiento ya no est\xE1 disponible.","picker.seatNoLongerYours":"Algunos asientos ya no est\xE1n disponibles para ti. Se han eliminado de tu pedido.","picker.seatNumberLower":"asiento {label}","picker.seatSalesClosedForEvent":"La venta de asientos para este evento ha finalizado.","picker.seatSelection":"Selecci\xF3n de asientos","picker.seatStatusLegend":"Leyenda del estado de los asientos","picker.seatTaken":"Otro comprador tom\xF3 un asiento que hab\xEDas elegido. Se ha eliminado de tu pedido.","picker.seatsHeldForNeedMoreTime":"Tus asientos est\xE1n retenidos durante <b>{time}</b>. \xBFNecesitas m\xE1s tiempo?","picker.seatsJustTaken":"Se acaban de ocupar uno o m\xE1s asientos. Vuelve a elegir.","picker.seatsJustTakenInCategory.one":"{count} asiento reci\xE9n ocupado en {label} \xB7 quedan {left}","picker.seatsJustTakenInCategory.other":"{count} asientos reci\xE9n ocupados en {label} \xB7 quedan {left}","picker.seatsNoLongerAvailableTryAnother":"Esos asientos ya no est\xE1n disponibles. Prueba otra cantidad o tipo de entrada.","picker.seatsSecured":"Asientos asegurados","picker.seatsSelectedCount.one":"{count} seleccionado","picker.seatsSelectedCount.other":"{count} seleccionados","picker.section":"Secci\xF3n","picker.secureMore":"Asegurar m\xE1s","picker.secureMoreAndCheckout":"Asegurar {count} m\xE1s y pagar","picker.securedCount":"{count} asegurados","picker.seeItIn3d":"Verlo en 3D","picker.select":"Seleccionar","picker.selectSeats":"Seleccionar asientos","picker.selectTable":"Seleccionar mesa","picker.selectWholeTable":"Seleccionar mesa completa","picker.selected":"Seleccionado","picker.selectingEllipsis":"Seleccionando\u2026","picker.showAllSeats":"Mostrar todos los asientos","picker.showAllTicketTypes":"Mostrar los {count} tipos de entrada","picker.showFewer":"Mostrar menos","picker.showLabelSeatsOnMap":"Mostrar los asientos de {label} en el mapa","picker.showTicketPanel":"Mostrar el panel de entradas","picker.sold":"Vendido","picker.soldOutCopy":"No hay asientos reservados disponibles actualmente para este evento.","picker.soldOutEyebrow":"Este evento","picker.soldOutTitle":"Agotado","picker.soldSeatExplanation":"Este asiento ya ha sido reservado.","picker.statusAvailable":"disponible","picker.statusOnHold":"en espera","picker.statusTaken2":"ocupado","picker.table":"Mesa","picker.tableCapacity":"Capacidad de la mesa","picker.tableUpdatedForGuests":"{label} actualizado para {count} invitados.","picker.temporarilyHeld":"Retenido temporalmente","picker.ticketPrices":"Precios de entradas","picker.ticketTypeSoldOut":"Ese tipo de entrada est\xE1 agotado. Prueba con otro tipo de entrada.","picker.tickets":"Entradas","picker.ticketsCount.one":"{count} entrada","picker.ticketsCount.other":"{count} entradas","picker.toggleColorblindColors":"Alternar colores para dalt\xF3nicos","picker.total":"Total","picker.trayHintTapOrBest":"Toca un asiento en el mapa, o deja que elijamos los mejores disponibles por ti.","picker.trayHintTapOrStanding":"Toca un asiento en el mapa \u2014 o consigue entradas de pie abajo.","picker.undo":"Deshacer","picker.upcomingTicketOffer":"Pr\xF3xima oferta de entradas","picker.updateTable":"Actualizar mesa","picker.updatingEllipsis":"Actualizando\u2026","picker.venueView":"Vista del recinto","picker.viewFromHere":"Vista desde aqu\xED","picker.viewFromThisSeat":"Vista desde este asiento","picker.wholeTypeWord":"{typeWord} completo","picker.willChooseClosestGroup":"Elegiremos el grupo disponible m\xE1s cercano por ti.","picker.willFindSeatsTogether":"Buscaremos {count} asientos juntos.","picker.yourSeats":"Tus asientos","picker.zoomIn":"Acercar","picker.zoomOut":"Alejar","picker.closeVenueNav":"Cerrar","picker.levelsAndAreas":"Niveles y zonas"}});var us={};Rt(us,{de:()=>Al});var Al,hs=ki(()=>{"use strict";Al={"common.cancel":"Abbrechen","common.close":"Schlie\xDFen","common.done":"Fertig","common.copied":"\u2713 Kopiert","picker.holdExpired":"Ihre Reservierung ist abgelaufen \u2014 die Pl\xE4tze wurden freigegeben. Bitte erneut ausw\xE4hlen.","picker.poweredBy":"Bereitgestellt von SeatLayer","picker.testMode":"TESTMODUS","picker.orphanHint":"Dadurch bleibt ein einzelner Platz \xFCbrig \u2014 r\xFCcken Sie ggf. einen Platz weiter.","picker.companionRequiresWheelchair":"Benachbarter Rollstuhlplatz erforderlich","picker.companionPairRequired":"W\xE4hlen Sie zu jedem Begleitticket den benachbarten Rollstuhlplatz aus.","map.aria":"Sitzplan. Mit Pfeiltasten zwischen Pl\xE4tzen navigieren, Eingabe zum Ausw\xE4hlen.","map.seatsLeft":"{count} FREI","map.soldOut":"AUSVERKAUFT","map.statusHeld":"Reserviert","map.statusTaken":"Vergeben","map.fromPrice":"AB {price}","picker.floor":"Etage","picker.zoomLevel":"Zoomstufe","picker.rungTip.zones":"\xDCbersicht \u2014 Bereichsgruppen wie Nordtrib\xFCne oder VIP","picker.rungTip.sections":"Bereichs-Bl\xF6cke \u2014 ausverkaufte und fast volle Bereiche werden abgedunkelt, um die Verf\xFCgbarkeit auf einen Blick zu zeigen","picker.rungTip.seats":"Einzelne Pl\xE4tze \u2014 Bl\xF6cke l\xF6sen sich zu Punkten auf","picker.rungLabel.zones":"ZONEN","picker.rungLabel.sections":"BEREICHE","picker.rungLabel.seats":"PL\xC4TZE","picker.sectionSummaryAria":"Bereichszusammenfassung {label}","picker.closeSectionSummary":"Bereichszusammenfassung schlie\xDFen","picker.seatsLeftInSection.one":"{count} Platz verf\xFCgbar","picker.seatsLeftInSection.other":"{count} Pl\xE4tze verf\xFCgbar","picker.overview":"\xDCbersicht","picker.entrance":"Eingang","picker.tapSeatHint":"Tippen Sie auf einen Platz, um die Ansicht zu pr\xFCfen","picker.ticketTierFor":"Ticketklasse f\xFCr {label}","picker.viewFromSeat":"Ansicht von Platz {label}","picker.real360":"REAL 360\xB0","picker.preview":"VORSCHAU","picker.sightline":"\u2248 {m} m zur B\xFChne","picker.panorama360":"360\xB0-Veranstaltungsfotos","picker.illustrationCaption":"Illustration \xB7 \u2248 {m} m von der B\xFChne","picker.restrictedView":"Eingeschr\xE4nkte Sicht","picker.obstructedView":"Sichtbehinderung","picker.premiumSeat":"Premium-Platz","picker.hideLimitedView":"Pl\xE4tze mit eingeschr\xE4nkter Sicht ausblenden","picker.bestSeatsPremium":"Beste Pl\xE4tze","picker.premiumFallbackNote":"Kein Premium-Block mit {count} Pl\xE4tzen \u2014 beste verf\xFCgbare werden angezeigt","picker.loading3d":"3D-Veranstaltungsort wird aufgebaut\u2026","picker.unavailable3d":"3D konnte nicht gestartet werden. Der Sitzplan bleibt verf\xFCgbar.","picker.jumpToSection":"Zum Bereich springen","picker.salesClosedPill":"Der Verkauf ist beendet","picker.salesClosedCopy":"Der Ticketverkauf f\xFCr diese Veranstaltung ist beendet.","picker.salesClosedCta":"Verkauf beendet","picker.salesClosedToast":"Der Verkauf f\xFCr diese Veranstaltung ist beendet.","picker.holdReassurance":"F\xFCr {time} reserviert \u2014 noch wird nichts abgebucht.","picker.securingSeats":"Ihre Pl\xE4tze werden gesichert\u2026","picker.openingCheckout":"Sicherer Checkout wird ge\xF6ffnet\u2026","picker.peekSecured":"\u2713 {count} gesichert \xB7 {total} \u2014 noch wird nichts abgebucht","picker.priceHint":"Die Farben auf dem Plan sind Ticketkategorien \u2014 tippen Sie eine an, um nur diese Pl\xE4tze zu sehen.","picker.findTogetherInstead":"Stattdessen Pl\xE4tze nebeneinander finden","picker.keepMyPicks":"Meine Auswahl behalten","picker.accessExpiredBody":"Melden Sie sich erneut an oder laden Sie die Seite neu, um diese Pl\xE4tze weiter durchzusehen. Bereits gehaltene Pl\xE4tze bleiben Ihnen erhalten.","picker.accessExpiredTitle":"Ihre Zugangssitzung ist beendet","picker.accessInvalidBody":"Sie k\xF6nnen weiterhin alles buchen, was als verf\xFCgbar angezeigt wird. Wenden Sie sich f\xFCr Zugang zum Rest an die Person, die Ihnen den Link geschickt hat.","picker.accessInvalidTitle":"Ihr Zugang konnte nicht best\xE4tigt werden","picker.accessPausedBody":"Der Veranstalter hat diese Auswahl pausiert. Versuchen Sie es in ein paar Minuten erneut.","picker.accessPausedTitle":"Diese Pl\xE4tze sind gerade reserviert","picker.accessRetry":"Erneut versuchen","picker.accessRevokedBody":"Bitten Sie die Person, die Ihnen diesen Link geschickt hat, um einen neuen, um weiter buchen zu k\xF6nnen.","picker.accessRevokedTitle":"Dieser Zugangslink ist nicht mehr aktiv","picker.accessiblePhysicalSeat":"Barrierefreier fester Sitzplatz","picker.addTime":"Zeit hinzuf\xFCgen","picker.addingEllipsis":"Wird hinzugef\xFCgt\u2026","picker.allLevels":"Alle Ebenen","picker.allPlacesBookedTogether":"Alle {count} Pl\xE4tze werden gemeinsam als ein exklusiver Tisch gebucht.","picker.allPrices":"Alle Preise","picker.allSeats":"Alle Pl\xE4tze","picker.allSetTitle":"Alles bereit","picker.anyTicketType":"Beliebige Ticketart","picker.anyVenueZone":"Beliebiger Bereich","picker.areas":"Bereiche","picker.available":"Verf\xFCgbar","picker.backToMap":"Zur\xFCck zur Karte","picker.backToVenue":"Zur\xFCck zur \xDCbersicht","picker.bestSeatsStar":"\u2726 Beste Pl\xE4tze","picker.booth":"Loge","picker.capacityGuests":"{count} G\xE4ste","picker.change":"\xC4ndern","picker.chartDerivedModel":"Aus dem Plan abgeleitetes Modell","picker.chartDerivedSeatEye":"Live-3D \xB7 aus dem Plan abgeleitete Sitzperspektive \xB7 nicht vermessen","picker.checkConnection":"Bitte \xFCberpr\xFCfen Sie Ihre Verbindung und versuchen Sie es erneut.","picker.checkoutCouldNotBeOpened":"Der Checkout konnte nicht ge\xF6ffnet werden. Ihre Pl\xE4tze sind weiterhin reserviert \u2014 bitte versuchen Sie es erneut.","picker.chooseAnotherToCompare":"W\xE4hlen Sie einen weiteren Platz zum Vergleichen.","picker.chooseGuestsCopy":"W\xE4hlen Sie, wie viele G\xE4ste zusammensitzen. Dieser Tisch ist exklusiv f\xFCr Ihre Gruppe reserviert.","picker.chooseMinMaxGuests":"W\xE4hlen Sie {min}\u2013{max} G\xE4ste","picker.clearSavedSeatComparison":"Gespeicherten Sitzvergleich l\xF6schen","picker.close":"Schlie\xDFen","picker.closeSeatStatus":"Sitzstatus schlie\xDFen","picker.closestGroupChosenInstantly":"N\xE4chstgelegene verf\xFCgbare Gruppe, sofort ausgew\xE4hlt.","picker.collapseTicketPanel":"Ticketbereich einklappen","picker.compareCount":"{count} vergleichen","picker.compareWithSaved":"Mit Gespeichertem vergleichen","picker.confirmOrCancelSeat":"Diesen Platz best\xE4tigen oder abbrechen","picker.confirmSeatLabel":"Platz {label} best\xE4tigen","picker.confirmYourTable":"Ihren Tisch best\xE4tigen","picker.confirmedAndOnWay":"best\xE4tigt. Eine Best\xE4tigung ist unterwegs.","picker.continue":"Weiter","picker.continueToCheckout":"Weiter zum Checkout","picker.couldNotAddMoreTime":"Zus\xE4tzliche Zeit konnte nicht hinzugef\xFCgt werden \u2014 bitte jetzt zum Checkout gehen.","picker.couldNotFindSeatsTogether":"Wir konnten keine {count} zusammenh\xE4ngenden Pl\xE4tze finden. Versuchen Sie es mit weniger Pl\xE4tzen oder einer anderen Ticketart.","picker.couldNotReleaseTickets":"Ihre Tickets konnten nicht freigegeben werden. Ihre Reservierung bleibt unver\xE4ndert.","picker.couldNotRemoveLabel":"{label} konnte nicht entfernt werden. Ihre Reservierung bleibt unver\xE4ndert.","picker.currentOffer":"Aktuelles Angebot","picker.currentTicketOffer":"Aktuelles Ticketangebot","picker.dragToLookAround":"Ziehen zum Umsehen \xB7 Scrollen zum Zoomen","picker.emptyWheelchairSpace":"Leerer Rollstuhlplatz","picker.exitFullScreen":"Vollbild verlassen","picker.fewer":"Weniger","picker.fewerGuests":"Weniger G\xE4ste","picker.fewerSeats":"Weniger Pl\xE4tze","picker.filterAndFocusByPrice":"Pl\xE4tze nach Preis filtern und fokussieren","picker.filters":"Filter","picker.findBestSeatsCount.one":"{count} besten Platz finden","picker.findBestSeatsCount.other":"{count} beste Pl\xE4tze finden","picker.findBestSeatsTogether":"Die besten Pl\xE4tze zusammen finden","picker.findNewSeats":"Neue Pl\xE4tze finden","picker.findingBestSeats":"Beste Pl\xE4tze werden gesucht\u2026","picker.findingEllipsis":"Wird gesucht\u2026","picker.fitToScreen":"An Bildschirm anpassen","picker.flat2dMap":"Flache 2D-Karte","picker.flexiblePartyTypeWord":"Flexible Gruppe \xB7 {typeWord}","picker.fullScreen":"Vollbild","picker.generalAdmission":"Stehplatz","picker.guestCountCouldNotBeSecured":"Diese G\xE4steanzahl konnte nicht gesichert werden. Ihre aktuelle Tischreservierung bleibt unver\xE4ndert.","picker.guestCountNoLongerAvailable":"Diese G\xE4steanzahl ist nicht mehr verf\xFCgbar. Ihre aktuelle Reservierung bleibt unver\xE4ndert.","picker.guests":"G\xE4ste","picker.guestsCount":"{count} G\xE4ste","picker.guestsCountEdit":"{count} G\xE4ste \xB7 Bearbeiten","picker.held":"Reserviert","picker.heldForYou":"F\xFCr Sie reserviert","picker.heldSeatExplanation":"Ein anderer K\xE4ufer h\xE4lt diesen Platz gerade. Er k\xF6nnte wieder verf\xFCgbar werden.","picker.heldTicketsReleased":"Reservierte Tickets wurden freigegeben. W\xE4hlen Sie neue Pl\xE4tze.","picker.heldTicketsRestored":"Ihre reservierten Tickets wurden wiederhergestellt.","picker.hidePanel":"Bereich ausblenden","picker.hideTicketPanel":"Ticketbereich ausblenden","picker.holdSeatsAndCheckout":"Pl\xE4tze reservieren & zum Checkout","picker.howOfferWorks":"So funktioniert das Angebot \u201E{name}\u201C","picker.interactive3dVenueView":"Interaktive 3D-Ansicht des Veranstaltungsorts","picker.keepMine":"Meine behalten","picker.labelNoLongerAvailable":"{label} ist nicht mehr verf\xFCgbar.","picker.labelRemoved":"{label} entfernt.","picker.labelRemovedFromHold":"{label} aus Ihrer Reservierung entfernt.","picker.labelRestored":"{label} wiederhergestellt.","picker.labelsNoLongerAvailable.one":"{labels} ist nicht mehr verf\xFCgbar. W\xE4hlen Sie einen anderen Platz.","picker.labelsNoLongerAvailable.other":"{labels} sind nicht mehr verf\xFCgbar. W\xE4hlen Sie eine andere Gruppe.","picker.leftCount.one":"noch {count}","picker.leftCount.other":"noch {count}","picker.levelNumber":"Ebene {number}","picker.levels":"Ebenen","picker.liveAvailability":"Live-Verf\xFCgbarkeit \u2014 Pl\xE4tze aktualisieren sich in Echtzeit","picker.loadingSeatMap":"Sitzplan wird geladen\u2026","picker.lookAroundLive3d":"In Live-3D umsehen","picker.manualTicketsRemovedNote":"Ihre manuell gew\xE4hlten Tickets werden erst entfernt, nachdem eine neue Gruppe gesichert wurde.","picker.map":"Karte","picker.mapDidNotLoad":"Der Sitzplan konnte nicht geladen werden","picker.maxTicketsForOrder":"Sie k\xF6nnen f\xFCr diese Bestellung bis zu {count} Tickets ausw\xE4hlen.","picker.selectExactMore":"Noch {count} ausw\xE4hlen","picker.selectExactCount":"Genau {count} Tickets ausw\xE4hlen","picker.selectMinimumMore":"Noch {count} ausw\xE4hlen","picker.adjustSeatSelection":"Sitzauswahl anpassen","picker.selectSeatsTogether":"W\xE4hlen Sie zusammenh\xE4ngende Pl\xE4tze in derselben Reihe und Kategorie.","picker.minToMaxGuests":"{min} bis {max} G\xE4ste","picker.more":"Mehr","picker.moreGuests":"Mehr G\xE4ste","picker.moreSeats":"Mehr Pl\xE4tze","picker.moreSelectedCount":"{count} weitere ausgew\xE4hlt","picker.moreTimeAdded":"Zus\xE4tzliche Zeit hinzugef\xFCgt \u2014 Ihre Pl\xE4tze sind weiterhin reserviert.","picker.noAccessibilityMetadata":"Keine Barrierefreiheits-Angaben vorhanden","picker.noAuthoredRestriction":"Keine vom Veranstalter angegebene Einschr\xE4nkung","picker.noSeatsSelected":"Keine Pl\xE4tze ausgew\xE4hlt","picker.notChargedYet":"Es wird noch nichts abgebucht.","picker.notForSale":"Nicht verk\xE4uflich","picker.notForSaleExplanation":"Dieser Platz ist im aktuellen Verkauf nicht enthalten.","picker.numberOfGuests":"Anzahl der G\xE4ste","picker.offerDetailActive":"Dieser Preis gilt automatisch f\xFCr berechtigte Pl\xE4tze. Tickets in aktiven Warenk\xF6rben verringern vor\xFCbergehend die verf\xFCgbare Menge; freigegebene oder abgelaufene Reservierungen geben sie zur\xFCck. Wenn das Angebot endet, greift das n\xE4chste passende Angebot oder der regul\xE4re Ticketpreis.","picker.offerDetailUpcoming":"Tickets sind derzeit zum regul\xE4ren Preis erh\xE4ltlich. Dieses geplante Angebot gilt automatisch f\xFCr berechtigte Pl\xE4tze, sobald es beginnt.","picker.offerRemainingAvailable":"{count} verf\xFCgbar","picker.offerStarts":"beginnt {time}","picker.offerUntil":"bis {time}","picker.oneSeatSaved":"1 Platz gespeichert","picker.oneSeatSavedChooseAnother":"Ein Platz gespeichert; w\xE4hlen Sie einen weiteren zum Vergleichen","picker.openAuthored360":"360\xB0-Ansicht des Veranstaltungsorts \xF6ffnen","picker.openComparison":"Vergleich \xF6ffnen","picker.openComparisonOfSeats":"Vergleich von {count} Pl\xE4tzen \xF6ffnen","picker.openTicketPanel":"Ticketbereich \xF6ffnen","picker.peekFromPrice":"Ab {price}","picker.peekTicketsTotal.one":"{count} Ticket \xB7 {total}","picker.peekTicketsTotal.other":"{count} Tickets \xB7 {total}","picker.perGuestPrice":"{price} pro Gast","picker.pickYourSeats":"W\xE4hlen Sie Ihre Pl\xE4tze","picker.preferredTicketType":"Bevorzugte Ticketart","picker.preferredVenueZone":"Bevorzugter Bereich","picker.priceNotSupplied":"Preis nicht angegeben","picker.releaseHeldTickets":"Reservierte Tickets freigeben und andere Pl\xE4tze w\xE4hlen","picker.releasingEllipsis":"Wird freigegeben\u2026","picker.removeHeldTicketLabel":"Reserviertes Ticket {label} entfernen","picker.removeSeatLabel":"{label} entfernen","picker.removeTicketsUntilOrFewer":"Entfernen Sie Tickets, bis Ihre Bestellung {count} oder weniger enth\xE4lt.","picker.replaceCurrentChoices":"Ihre aktuelle Auswahl ersetzen?","picker.review":"\xDCberpr\xFCfen","picker.row":"Reihe","picker.rowLabel":"Reihe {label}","picker.saveToCompare":"Zum Vergleich speichern","picker.savedForComparison":"Zum Vergleich gespeichert","picker.savedSeatComparison":"Gespeicherter Sitzvergleich","picker.scheduledOffer":"Geplantes Angebot","picker.seat":"Platz","picker.seatCount.one":"{count} Platz","picker.seatCount.other":"{count} Pl\xE4tze","picker.seatJustTakenByAnother":"Platz {label} wurde gerade von einem anderen K\xE4ufer \xFCbernommen.","picker.seatLabel":"Platz {label}","picker.seatNoLongerAvailable":"Dieser Platz ist nicht mehr verf\xFCgbar.","picker.seatNoLongerYours":"Einige Pl\xE4tze sind f\xFCr Sie nicht mehr verf\xFCgbar. Sie wurden aus Ihrer Bestellung entfernt.","picker.seatNumberLower":"Platz {label}","picker.seatSalesClosedForEvent":"Der Ticketverkauf f\xFCr diese Veranstaltung ist beendet.","picker.seatSelection":"Sitzplatzauswahl","picker.seatStatusLegend":"Legende zum Sitzstatus","picker.seatTaken":"Ein anderer K\xE4ufer hat einen von Ihnen gew\xE4hlten Platz \xFCbernommen. Er wurde aus Ihrer Bestellung entfernt.","picker.seatsHeldForNeedMoreTime":"Ihre Pl\xE4tze sind f\xFCr <b>{time}</b> reserviert. Mehr Zeit ben\xF6tigt?","picker.seatsJustTaken":"Ein oder mehrere Pl\xE4tze wurden gerade vergeben. Bitte w\xE4hlen Sie erneut.","picker.seatsJustTakenInCategory.one":"{count} Platz gerade vergeben in {label} \xB7 noch {left}","picker.seatsJustTakenInCategory.other":"{count} Pl\xE4tze gerade vergeben in {label} \xB7 noch {left}","picker.seatsNoLongerAvailableTryAnother":"Diese Pl\xE4tze sind nicht mehr verf\xFCgbar. Versuchen Sie eine andere Anzahl oder Ticketart.","picker.seatsSecured":"Pl\xE4tze gesichert","picker.seatsSelectedCount.one":"{count} ausgew\xE4hlt","picker.seatsSelectedCount.other":"{count} ausgew\xE4hlt","picker.section":"Bereich","picker.secureMore":"Mehr sichern","picker.secureMoreAndCheckout":"{count} weitere sichern & zum Checkout","picker.securedCount":"{count} gesichert","picker.seeItIn3d":"In 3D ansehen","picker.select":"Ausw\xE4hlen","picker.selectSeats":"Pl\xE4tze ausw\xE4hlen","picker.selectTable":"Tisch ausw\xE4hlen","picker.selectWholeTable":"Ganzen Tisch ausw\xE4hlen","picker.selected":"Ausgew\xE4hlt","picker.selectingEllipsis":"Wird ausgew\xE4hlt\u2026","picker.showAllSeats":"Alle Pl\xE4tze anzeigen","picker.showAllTicketTypes":"Alle {count} Ticketarten anzeigen","picker.showFewer":"Weniger anzeigen","picker.showLabelSeatsOnMap":"{label}-Pl\xE4tze auf der Karte anzeigen","picker.showTicketPanel":"Ticketbereich anzeigen","picker.sold":"Verkauft","picker.soldOutCopy":"F\xFCr diese Veranstaltung sind derzeit keine reservierten Pl\xE4tze verf\xFCgbar.","picker.soldOutEyebrow":"Diese Veranstaltung","picker.soldOutTitle":"Ausverkauft","picker.soldSeatExplanation":"Dieser Platz wurde bereits gebucht.","picker.statusAvailable":"verf\xFCgbar","picker.statusOnHold":"reserviert","picker.statusTaken2":"vergeben","picker.table":"Tisch","picker.tableCapacity":"Tischkapazit\xE4t","picker.tableUpdatedForGuests":"{label} auf {count} G\xE4ste aktualisiert.","picker.temporarilyHeld":"Vor\xFCbergehend reserviert","picker.ticketPrices":"Ticketpreise","picker.ticketTypeSoldOut":"Diese Ticketart ist ausverkauft. Versuchen Sie eine andere Ticketart.","picker.tickets":"Tickets","picker.ticketsCount.one":"{count} Ticket","picker.ticketsCount.other":"{count} Tickets","picker.toggleColorblindColors":"Farbenblindenfreundliche Farben umschalten","picker.total":"Gesamt","picker.trayHintTapOrBest":"Tippen Sie auf einen Platz in der Karte, oder lassen Sie uns die besten verf\xFCgbaren f\xFCr Sie w\xE4hlen.","picker.trayHintTapOrStanding":"Tippen Sie auf einen Platz in der Karte \u2014 oder holen Sie sich unten Stehplatztickets.","picker.undo":"R\xFCckg\xE4ngig","picker.upcomingTicketOffer":"Bevorstehendes Ticketangebot","picker.updateTable":"Tisch aktualisieren","picker.updatingEllipsis":"Wird aktualisiert\u2026","picker.venueView":"Ansicht des Veranstaltungsorts","picker.viewFromHere":"Ansicht von hier","picker.viewFromThisSeat":"Ansicht von diesem Platz","picker.wholeTypeWord":"Ganzer {typeWord}","picker.willChooseClosestGroup":"Wir w\xE4hlen die n\xE4chstgelegene verf\xFCgbare Gruppe f\xFCr Sie.","picker.willFindSeatsTogether":"Wir finden {count} Pl\xE4tze zusammen f\xFCr Sie.","picker.yourSeats":"Ihre Pl\xE4tze","picker.zoomIn":"Vergr\xF6\xDFern","picker.zoomOut":"Verkleinern","picker.closeVenueNav":"Schlie\xDFen","picker.levelsAndAreas":"Ebenen & Bereiche"}});var ps={};Rt(ps,{fr:()=>Bl});var Bl,fs=ki(()=>{"use strict";Bl={"common.cancel":"Annuler","common.close":"Fermer","common.done":"Termin\xE9","common.copied":"\u2713 Copi\xE9","picker.holdExpired":"Votre r\xE9servation a expir\xE9 \u2014 les si\xE8ges ont \xE9t\xE9 lib\xE9r\xE9s. S\xE9lectionnez \xE0 nouveau.","picker.poweredBy":"Propuls\xE9 par SeatLayer","picker.testMode":"MODE TEST","picker.orphanHint":"Cela laisse un si\xE8ge isol\xE9 \u2014 pensez \xE0 vous d\xE9caler d'un si\xE8ge.","picker.companionRequiresWheelchair":"N\xE9cessite la place fauteuil roulant adjacente","picker.companionPairRequired":"S\xE9lectionnez la place fauteuil roulant adjacente avec chaque billet accompagnateur.","map.aria":"Plan de salle. Utilisez les fl\xE8ches pour naviguer entre les si\xE8ges, Entr\xE9e pour s\xE9lectionner.","map.seatsLeft":"{count} LIBRES","map.soldOut":"COMPLET","map.statusHeld":"En attente","map.statusTaken":"Pris","map.fromPrice":"D\xC8S {price}","picker.floor":"\xC9tage","picker.zoomLevel":"Niveau de zoom","picker.rungTip.zones":"Vue g\xE9n\xE9rale \u2014 groupes de sections comme Tribune nord ou VIP","picker.rungTip.sections":"Blocs de sections \u2014 les sections compl\xE8tes ou presque pleines sont estomp\xE9es pour voir la disponibilit\xE9 en un coup d\u2019\u0153il","picker.rungTip.seats":"Si\xE8ges individuels \u2014 les blocs se transforment en points","picker.rungLabel.zones":"ZONES","picker.rungLabel.sections":"SECTIONS","picker.rungLabel.seats":"SI\xC8GES","picker.sectionSummaryAria":"R\xE9sum\xE9 de la section {label}","picker.closeSectionSummary":"Fermer le r\xE9sum\xE9 de la section","picker.seatsLeftInSection.one":"{count} si\xE8ge restant","picker.seatsLeftInSection.other":"{count} si\xE8ges restants","picker.overview":"Vue d'ensemble","picker.entrance":"Entr\xE9e","picker.tapSeatHint":"Appuyez sur un si\xE8ge pour v\xE9rifier sa vue","picker.ticketTierFor":"Cat\xE9gorie de billet pour {label}","picker.viewFromSeat":"Vue depuis le si\xE8ge {label}","picker.real360":"VRAI 360\xB0","picker.preview":"APER\xC7U","picker.sightline":"\u2248 {m} m de la sc\xE8ne","picker.panorama360":"Photo panoramique 360\xB0 du lieu","picker.illustrationCaption":"illustration \xB7 \u2248 {m} m de la sc\xE8ne","picker.restrictedView":"Visibilit\xE9 r\xE9duite","picker.obstructedView":"Vue obstru\xE9e","picker.premiumSeat":"Place premium","picker.hideLimitedView":"Masquer les places \xE0 visibilit\xE9 r\xE9duite","picker.bestSeatsPremium":"Meilleures places","picker.premiumFallbackNote":"Aucun bloc premium de {count} \u2014 affichage des meilleures places disponibles","picker.loading3d":"Cr\xE9ation de la salle en 3D\u2026","picker.unavailable3d":"La 3D n\u2019a pas pu d\xE9marrer. Le plan des si\xE8ges reste disponible.","picker.jumpToSection":"Acc\xE9der \xE0 une section","picker.salesClosedPill":"Les ventes sont closes","picker.salesClosedCopy":"La vente de billets pour cet \xE9v\xE9nement est termin\xE9e.","picker.salesClosedCta":"Ventes closes","picker.salesClosedToast":"Les ventes sont closes pour cet \xE9v\xE9nement.","picker.holdReassurance":"\xC0 vous pendant {time} \u2014 vous ne serez pas encore d\xE9bit\xE9.","picker.securingSeats":"R\xE9servation de vos places\u2026","picker.openingCheckout":"Ouverture du paiement s\xE9curis\xE9\u2026","picker.peekSecured":"\u2713 {count} r\xE9serv\xE9es \xB7 {total} \u2014 vous ne serez pas encore d\xE9bit\xE9","picker.priceHint":"Les couleurs du plan correspondent aux types de billets \u2014 touchez-en un ci-dessous pour ne voir que ces places.","picker.findTogetherInstead":"Trouver plut\xF4t des places c\xF4te \xE0 c\xF4te","picker.keepMyPicks":"Garder ma s\xE9lection","picker.accessExpiredBody":"Reconnectez-vous ou rechargez la page pour continuer \xE0 consulter ces places. Ce que vous avez d\xE9j\xE0 r\xE9serv\xE9 reste \xE0 vous.","picker.accessExpiredTitle":"Votre session d\u2019acc\xE8s a pris fin","picker.accessInvalidBody":"Vous pouvez toujours r\xE9server tout ce qui est indiqu\xE9 comme disponible. Contactez la personne qui vous a envoy\xE9 ce lien pour acc\xE9der au reste.","picker.accessInvalidTitle":"Nous n\u2019avons pas pu v\xE9rifier votre acc\xE8s","picker.accessPausedBody":"L\u2019organisateur a mis cette s\xE9lection en pause. R\xE9essayez dans quelques minutes.","picker.accessPausedTitle":"Ces places sont actuellement en attente","picker.accessRetry":"R\xE9essayer","picker.accessRevokedBody":"Demandez \xE0 la personne qui vous a envoy\xE9 ce lien de vous en fournir un nouveau pour continuer \xE0 r\xE9server ces places.","picker.accessRevokedTitle":"Ce lien d\u2019acc\xE8s n\u2019est plus actif","picker.accessiblePhysicalSeat":"Si\xE8ge physique accessible","picker.addTime":"Ajouter du temps","picker.addingEllipsis":"Ajout en cours\u2026","picker.allLevels":"Tous les niveaux","picker.allPlacesBookedTogether":"Les {count} places sont r\xE9serv\xE9es ensemble comme une table exclusive.","picker.allPrices":"Tous les prix","picker.allSeats":"Toutes les places","picker.allSetTitle":"Tout est pr\xEAt","picker.anyTicketType":"Tout type de billet","picker.anyVenueZone":"Toute zone du lieu","picker.areas":"Zones","picker.available":"Disponible","picker.backToMap":"Retour au plan","picker.backToVenue":"Retour au lieu","picker.bestSeatsStar":"\u2726 Meilleures places","picker.booth":"Loge","picker.capacityGuests":"{count} invit\xE9s","picker.change":"Modifier","picker.chartDerivedModel":"Mod\xE8le d\xE9riv\xE9 du plan","picker.chartDerivedSeatEye":"3D en direct \xB7 point de vue d\xE9riv\xE9 du plan \xB7 non v\xE9rifi\xE9","picker.checkConnection":"V\xE9rifiez votre connexion et r\xE9essayez.","picker.checkoutCouldNotBeOpened":"Le paiement n\u2019a pas pu s\u2019ouvrir. Vos places sont toujours r\xE9serv\xE9es \u2014 veuillez r\xE9essayer.","picker.chooseAnotherToCompare":"Choisissez une autre place \xE0 comparer.","picker.chooseGuestsCopy":"Choisissez combien d\u2019invit\xE9s seront assis ensemble. Cette table est r\xE9serv\xE9e exclusivement \xE0 votre groupe.","picker.chooseMinMaxGuests":"Choisissez de {min} \xE0 {max} invit\xE9s","picker.clearSavedSeatComparison":"Effacer la comparaison de places enregistr\xE9e","picker.close":"Fermer","picker.closeSeatStatus":"Fermer le statut de la place","picker.closestGroupChosenInstantly":"Groupe disponible le plus proche, choisi instantan\xE9ment.","picker.collapseTicketPanel":"R\xE9duire le panneau des billets","picker.compareCount":"Comparer {count}","picker.compareWithSaved":"Comparer avec l\u2019enregistr\xE9e","picker.confirmOrCancelSeat":"Confirmer ou annuler cette place","picker.confirmSeatLabel":"Confirmer la place {label}","picker.confirmYourTable":"Confirmez votre table","picker.confirmedAndOnWay":"confirm\xE9s. Une confirmation arrive.","picker.continue":"Continuer","picker.continueToCheckout":"Continuer vers le paiement","picker.couldNotAddMoreTime":"Impossible d\u2019ajouter du temps \u2014 veuillez passer au paiement maintenant.","picker.couldNotFindSeatsTogether":"Nous n\u2019avons pas trouv\xE9 {count} places ensemble. Essayez avec moins de places ou un autre type de billet.","picker.couldNotReleaseTickets":"Impossible de lib\xE9rer vos billets. Votre r\xE9servation reste inchang\xE9e.","picker.couldNotRemoveLabel":"Impossible de retirer {label}. Votre r\xE9servation reste inchang\xE9e.","picker.currentOffer":"Offre actuelle","picker.currentTicketOffer":"Offre de billets actuelle","picker.dragToLookAround":"Faites glisser pour regarder autour \xB7 d\xE9filez pour zoomer","picker.emptyWheelchairSpace":"Emplacement vide pour fauteuil roulant","picker.exitFullScreen":"Quitter le plein \xE9cran","picker.fewer":"Moins","picker.fewerGuests":"Moins d\u2019invit\xE9s","picker.fewerSeats":"Moins de places","picker.filterAndFocusByPrice":"Filtrer et cibler les places par prix","picker.filters":"Filtres","picker.findBestSeatsCount.one":"Trouver {count} meilleure place","picker.findBestSeatsCount.other":"Trouver {count} meilleures places","picker.findBestSeatsTogether":"Trouver les meilleures places ensemble","picker.findNewSeats":"Trouver de nouvelles places","picker.findingBestSeats":"Recherche des meilleures places\u2026","picker.findingEllipsis":"Recherche\u2026","picker.fitToScreen":"Ajuster \xE0 l\u2019\xE9cran","picker.flat2dMap":"Plan 2D \xE0 plat","picker.flexiblePartyTypeWord":"Groupe flexible \xB7 {typeWord}","picker.fullScreen":"Plein \xE9cran","picker.generalAdmission":"Entr\xE9e g\xE9n\xE9rale","picker.guestCountCouldNotBeSecured":"Ce nombre d\u2019invit\xE9s n\u2019a pas pu \xEAtre s\xE9curis\xE9. Votre r\xE9servation de table actuelle reste inchang\xE9e.","picker.guestCountNoLongerAvailable":"Ce nombre d\u2019invit\xE9s n\u2019est plus disponible. Votre r\xE9servation actuelle reste inchang\xE9e.","picker.guests":"Invit\xE9s","picker.guestsCount":"{count} invit\xE9s","picker.guestsCountEdit":"{count} invit\xE9s \xB7 Modifier","picker.held":"R\xE9serv\xE9","picker.heldForYou":"R\xE9serv\xE9 pour vous","picker.heldSeatExplanation":"Un autre acheteur retient cette place actuellement. Elle pourrait redevenir disponible.","picker.heldTicketsReleased":"Les billets r\xE9serv\xE9s ont \xE9t\xE9 lib\xE9r\xE9s. Choisissez vos nouvelles places.","picker.heldTicketsRestored":"Vos billets r\xE9serv\xE9s ont \xE9t\xE9 restaur\xE9s.","picker.hidePanel":"Masquer le panneau","picker.hideTicketPanel":"Masquer le panneau des billets","picker.holdSeatsAndCheckout":"R\xE9server les places et payer","picker.howOfferWorks":"Comment fonctionne l\u2019offre \xAB {name} \xBB","picker.interactive3dVenueView":"Vue 3D interactive du lieu","picker.keepMine":"Garder les miennes","picker.labelNoLongerAvailable":"{label} n\u2019est plus disponible.","picker.labelRemoved":"{label} retir\xE9.","picker.labelRemovedFromHold":"{label} retir\xE9 de votre r\xE9servation.","picker.labelRestored":"{label} restaur\xE9.","picker.labelsNoLongerAvailable.one":"{labels} n\u2019est plus disponible. Choisissez une autre place.","picker.labelsNoLongerAvailable.other":"{labels} ne sont plus disponibles. Choisissez un autre groupe.","picker.leftCount.one":"{count} restante","picker.leftCount.other":"{count} restantes","picker.levelNumber":"Niveau {number}","picker.levels":"Niveaux","picker.liveAvailability":"Disponibilit\xE9 en direct \u2014 les places se mettent \xE0 jour en temps r\xE9el","picker.loadingSeatMap":"Chargement du plan de salle\u2026","picker.lookAroundLive3d":"Regarder autour en 3D en direct","picker.manualTicketsRemovedNote":"Vos billets s\xE9lectionn\xE9s manuellement ne seront retir\xE9s qu\u2019apr\xE8s qu\u2019un nouveau groupe soit s\xE9curis\xE9.","picker.map":"Plan","picker.mapDidNotLoad":"Le plan de salle n\u2019a pas pu se charger","picker.maxTicketsForOrder":"Vous pouvez s\xE9lectionner jusqu\u2019\xE0 {count} billets pour cette commande.","picker.selectExactMore":"S\xE9lectionnez-en encore {count}","picker.selectExactCount":"S\xE9lectionnez exactement {count} billets","picker.selectMinimumMore":"S\xE9lectionnez-en encore {count}","picker.adjustSeatSelection":"Ajustez la s\xE9lection des si\xE8ges","picker.selectSeatsTogether":"Choisissez des si\xE8ges contigus dans la m\xEAme rang\xE9e et cat\xE9gorie.","picker.minToMaxGuests":"De {min} \xE0 {max} invit\xE9s","picker.more":"Plus","picker.moreGuests":"Plus d\u2019invit\xE9s","picker.moreSeats":"Plus de places","picker.moreSelectedCount":"{count} de plus s\xE9lectionn\xE9es","picker.moreTimeAdded":"Du temps suppl\xE9mentaire a \xE9t\xE9 ajout\xE9 \u2014 vos places restent r\xE9serv\xE9es.","picker.noAccessibilityMetadata":"Aucune information d\u2019accessibilit\xE9 fournie","picker.noAuthoredRestriction":"Aucune restriction indiqu\xE9e par l\u2019organisateur","picker.noSeatsSelected":"Aucune place s\xE9lectionn\xE9e","picker.notChargedYet":"Vous ne serez pas encore d\xE9bit\xE9.","picker.notForSale":"Non disponible \xE0 la vente","picker.notForSaleExplanation":"Cette place n\u2019est pas incluse dans la vente en cours.","picker.numberOfGuests":"Nombre d\u2019invit\xE9s","picker.offerDetailActive":"Ce prix s\u2019applique automatiquement aux places \xE9ligibles. Les billets dans les paniers actifs r\xE9duisent temporairement la quantit\xE9 disponible ; les r\xE9servations lib\xE9r\xE9es ou expir\xE9es la restituent. Lorsque l\u2019offre se termine, l\u2019offre correspondante suivante ou le prix normal du billet prend le relais.","picker.offerDetailUpcoming":"Les billets sont disponibles maintenant \xE0 leur prix normal. Cette offre programm\xE9e s\u2019appliquera automatiquement aux places \xE9ligibles d\xE8s son d\xE9marrage.","picker.offerRemainingAvailable":"{count} disponibles","picker.offerStarts":"d\xE9bute {time}","picker.offerUntil":"jusqu\u2019\xE0 {time}","picker.oneSeatSaved":"1 place enregistr\xE9e","picker.oneSeatSavedChooseAnother":"Une place enregistr\xE9e ; choisissez-en une autre \xE0 comparer","picker.openAuthored360":"Ouvrir la vue 360\xB0 du lieu","picker.openComparison":"Ouvrir la comparaison","picker.openComparisonOfSeats":"Ouvrir la comparaison de {count} places","picker.openTicketPanel":"Ouvrir le panneau des billets","picker.peekFromPrice":"D\xE8s {price}","picker.peekTicketsTotal.one":"{count} billet \xB7 {total}","picker.peekTicketsTotal.other":"{count} billets \xB7 {total}","picker.perGuestPrice":"{price} par invit\xE9","picker.pickYourSeats":"Choisissez vos places","picker.preferredTicketType":"Type de billet pr\xE9f\xE9r\xE9","picker.preferredVenueZone":"Zone du lieu pr\xE9f\xE9r\xE9e","picker.priceNotSupplied":"Prix non fourni","picker.releaseHeldTickets":"Lib\xE9rer les billets r\xE9serv\xE9s et choisir d\u2019autres places","picker.releasingEllipsis":"Lib\xE9ration en cours\u2026","picker.removeHeldTicketLabel":"Retirer le billet r\xE9serv\xE9 {label}","picker.removeSeatLabel":"Retirer {label}","picker.removeTicketsUntilOrFewer":"Retirez des billets jusqu\u2019\xE0 ce que votre commande en contienne {count} ou moins.","picker.replaceCurrentChoices":"Remplacer votre s\xE9lection actuelle ?","picker.review":"V\xE9rifier","picker.row":"Rang\xE9e","picker.rowLabel":"Rang\xE9e {label}","picker.saveToCompare":"Enregistrer pour comparer","picker.savedForComparison":"Enregistr\xE9 pour comparaison","picker.savedSeatComparison":"Comparaison de places enregistr\xE9e","picker.scheduledOffer":"Offre programm\xE9e","picker.seat":"Place","picker.seatCount.one":"{count} place","picker.seatCount.other":"{count} places","picker.seatJustTakenByAnother":"La place {label} vient d\u2019\xEAtre prise par un autre acheteur.","picker.seatLabel":"Place {label}","picker.seatNoLongerAvailable":"Cette place n\u2019est plus disponible.","picker.seatNoLongerYours":"Certaines places ne vous sont plus disponibles. Elles ont \xE9t\xE9 retir\xE9es de votre commande.","picker.seatNumberLower":"place {label}","picker.seatSalesClosedForEvent":"La vente de places pour cet \xE9v\xE9nement est termin\xE9e.","picker.seatSelection":"S\xE9lection des places","picker.seatStatusLegend":"L\xE9gende du statut des places","picker.seatTaken":"Un autre acheteur a pris une place que vous aviez choisie. Elle a \xE9t\xE9 retir\xE9e de votre commande.","picker.seatsHeldForNeedMoreTime":"Vos places sont r\xE9serv\xE9es pendant <b>{time}</b>. Besoin de plus de temps ?","picker.seatsJustTaken":"Une ou plusieurs places viennent d\u2019\xEAtre prises. Veuillez choisir \xE0 nouveau.","picker.seatsJustTakenInCategory.one":"{count} place tout juste prise dans {label} \xB7 {left} restante","picker.seatsJustTakenInCategory.other":"{count} places tout juste prises dans {label} \xB7 {left} restantes","picker.seatsNoLongerAvailableTryAnother":"Ces places ne sont plus disponibles. Essayez une autre quantit\xE9 ou un autre type de billet.","picker.seatsSecured":"Places s\xE9curis\xE9es","picker.seatsSelectedCount.one":"{count} s\xE9lectionn\xE9e","picker.seatsSelectedCount.other":"{count} s\xE9lectionn\xE9es","picker.section":"Section","picker.secureMore":"S\xE9curiser plus","picker.secureMoreAndCheckout":"S\xE9curiser {count} de plus et payer","picker.securedCount":"{count} s\xE9curis\xE9es","picker.seeItIn3d":"Voir en 3D","picker.select":"S\xE9lectionner","picker.selectSeats":"S\xE9lectionner des places","picker.selectTable":"S\xE9lectionner la table","picker.selectWholeTable":"S\xE9lectionner la table enti\xE8re","picker.selected":"S\xE9lectionn\xE9e","picker.selectingEllipsis":"S\xE9lection en cours\u2026","picker.showAllSeats":"Afficher toutes les places","picker.showAllTicketTypes":"Afficher les {count} types de billets","picker.showFewer":"Afficher moins","picker.showLabelSeatsOnMap":"Afficher les places {label} sur le plan","picker.showTicketPanel":"Afficher le panneau des billets","picker.sold":"Vendu","picker.soldOutCopy":"Aucune place r\xE9serv\xE9e n\u2019est actuellement disponible pour cet \xE9v\xE9nement.","picker.soldOutEyebrow":"Cet \xE9v\xE9nement","picker.soldOutTitle":"Complet","picker.soldSeatExplanation":"Cette place a d\xE9j\xE0 \xE9t\xE9 r\xE9serv\xE9e.","picker.statusAvailable":"disponible","picker.statusOnHold":"en attente","picker.statusTaken2":"prise","picker.table":"Table","picker.tableCapacity":"Capacit\xE9 de la table","picker.tableUpdatedForGuests":"{label} mise \xE0 jour pour {count} invit\xE9s.","picker.temporarilyHeld":"Temporairement r\xE9serv\xE9","picker.ticketPrices":"Prix des billets","picker.ticketTypeSoldOut":"Ce type de billet est \xE9puis\xE9. Essayez un autre type de billet.","picker.tickets":"Billets","picker.ticketsCount.one":"{count} billet","picker.ticketsCount.other":"{count} billets","picker.toggleColorblindColors":"Activer/d\xE9sactiver les couleurs adapt\xE9es au daltonisme","picker.total":"Total","picker.trayHintTapOrBest":"Touchez une place sur le plan, ou laissez-nous choisir les meilleures disponibles pour vous.","picker.trayHintTapOrStanding":"Touchez une place sur le plan \u2014 ou prenez des billets debout ci-dessous.","picker.undo":"Annuler","picker.upcomingTicketOffer":"Offre de billets \xE0 venir","picker.updateTable":"Mettre \xE0 jour la table","picker.updatingEllipsis":"Mise \xE0 jour en cours\u2026","picker.venueView":"Vue du lieu","picker.viewFromHere":"Vue depuis ici","picker.viewFromThisSeat":"Vue depuis cette place","picker.wholeTypeWord":"{typeWord} entier","picker.willChooseClosestGroup":"Nous choisirons le groupe disponible le plus proche pour vous.","picker.willFindSeatsTogether":"Nous trouverons {count} places ensemble.","picker.yourSeats":"Vos places","picker.zoomIn":"Zoomer","picker.zoomOut":"D\xE9zoomer","picker.closeVenueNav":"Fermer","picker.levelsAndAreas":"Niveaux et zones"}});var Dl={};Rt(Dl,{ACCESSIBILITY_RING_COLOR:()=>Ln,ACCESSIBILITY_TYPES:()=>Tn,CHART_STORAGE_KEY:()=>xs,CURRENCY_CHOICES:()=>Ta,DEFAULT_CURRENCY:()=>Mc,LABEL_STYLE_MAX_SIZE:()=>Ms,LABEL_STYLE_MIN_SIZE:()=>Cs,MAX_EVENT_INVENTORY:()=>oa,MAX_GA_CAPACITY:()=>_t,PickerController:()=>bn,PickerSelectionError:()=>ke,RENDERED_QUALITY_REPORT_VERSION:()=>gr,SEAT_COMMERCIAL_MARKS:()=>Cn,SUPPORTED_LOCALES:()=>Er,SURROUNDINGS_SHAPE_ROLES:()=>Mn,SeatmapRenderer:()=>di,TIER_HEIGHT_M:()=>Pi,UNGROUPED_ID:()=>He,accessibilityMeta:()=>Is,accessibilityRingColor:()=>Et,allObjects:()=>ae,applyHidden:()=>Gi,chartBounds:()=>Dt,computeSections:()=>ct,createRenderer:()=>dn,currencyExponent:()=>Pr,currencySymbol:()=>Ca,expandBooth:()=>Ot,expandChart:()=>be,expandRow:()=>st,expandRowSlots:()=>Jn,expandTable:()=>ze,expandTableSlots:()=>Fi,floorObjects:()=>ra,floorOverviewTranslations:()=>ir,floorsOf:()=>Ne,formatDate:()=>Ea,formatMinor:()=>La,formatMoney:()=>Yt,fromMinorUnits:()=>Rr,gaAreasOf:()=>lt,gaInventorySegments:()=>Ni,gaUnitLabel:()=>rr,gaUnitLabels:()=>Ge,generateSeatPanorama:()=>Tl,generateSeatThumb:()=>Rl,getLocale:()=>Ma,growJoinedGAInventory:()=>sa,hiddenObjectIds:()=>ar,inspectRenderedQualityEvidence:()=>ga,isGaUnitLabel:()=>aa,isSectionHidden:()=>sr,layerOf:()=>Rs,layoutFloorOverview:()=>zi,loadLocale:()=>Fl,objectCenter:()=>tr,owningSectionForObject:()=>Ft,pointInPolygon:()=>Bi,pointInPolygonWithHoles:()=>Y,polygonLabelPoint:()=>at,resolveLocale:()=>$i,rowInventoryCount:()=>ea,rowSeatPositions:()=>Oi,seatCommercialMeta:()=>Ls,sectionGeometry:()=>xe,setLocale:()=>ft,setMoneyLocale:()=>qi,setStringOverrides:()=>Pa,stackFloors:()=>_i,t:()=>oe,tCount:()=>Ra,tableInventoryCount:()=>ta,tableSeatCountsBySide:()=>er,translateObject:()=>Di,validGAInventorySegments:()=>or});module.exports=ks(Dl);var xs="seatmap.chart";var Tn=[{key:"wheelchair",label:"Wheelchair space",short:"Wheelchair",icon:"\u267F"},{key:"companion",label:"Companion seat",short:"Companion",icon:"\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}"},{key:"semi-ambulatory",label:"Semi-ambulatory (limited mobility)",short:"Limited mobility",icon:"\u{1F9AF}"},{key:"designated-aisle",label:"Designated aisle / transfer seat",short:"Aisle transfer",icon:"AS"},{key:"step-free",label:"Step-free accessible seat",short:"Step-free",icon:"SF"},{key:"hearing",label:"Assistive listening",short:"Hearing",icon:"\u{1F9BB}"},{key:"cart",label:"CART live-caption view",short:"CART captions",icon:"CC"},{key:"sign-language",label:"Sign-language view",short:"Sign language",icon:"\u{1F91F}"},{key:"low-vision",label:"Blind / low-vision viewing",short:"Low vision",icon:"LV"},{key:"sensory-friendly",label:"Quiet / sensory-friendly seating",short:"Sensory-friendly",icon:"QS"},{key:"plus-size",label:"Plus-size seat",short:"Plus-size",icon:"\u{1F4BA}"},{key:"lift-armrest",label:"Lift-up armrest",short:"Lift armrest",icon:"\u2195\uFE0F"}],ws=new Map(Tn.map(t=>[t.key,t]));function Is(t){return ws.get(t)}var Ln={wheelchair:"#3b82f6",companion:"#8b5cf6","semi-ambulatory":"#0ea5e9","designated-aisle":"#0284c7","step-free":"#16a34a",hearing:"#14b8a6",cart:"#7c3aed","sign-language":"#f59e0b","low-vision":"#d97706","sensory-friendly":"#6366f1","plus-size":"#ec4899","lift-armrest":"#22c55e"};function Et(t){let e=t?.[0];return e&&Ln[e]||"#3b82f6"}var Cn=[{key:"obstructedView",label:"Obstructed view",short:"Obstructed",icon:"\u26D4"},{key:"restrictedView",label:"Restricted view",short:"Restricted",icon:"\u{1F441}"},{key:"premium",label:"Premium seat",short:"Premium",icon:"\u2605"}],Ts=new Map(Cn.map(t=>[t.key,t]));function Ls(t){return Ts.get(t)}var Cs=8,Ms=24,Mn=["reference-focal","bar","entrance","exit","restroom","screen","sound","concession","coat","wall","rail","suite","obstruction"],Ps=new Set(Mn);function Rs(t){switch(t.type){case"row":case"table":case"gaArea":case"booth":case"section":return"interactive";case"decorImage":return t.layer==="foreground"?"foreground":"background";case"shape":return t.role&&Ps.has(t.role)?"surroundings":"background";case"text":return"background";default:return"interactive"}}var Pn=t=>Math.max(1,t.fontSize*.6+(t.letterSpacing??0));function Es(t,e){let i=t.text.split(/\r?\n/);if(!t.width)return Math.max(1,i.length);let n=Math.max(1,Math.floor(e/Pn(t))),r=0;for(let o of i){if(!o.length){r+=1;continue}let s=0;for(let a of o.split(/\s+/)){let l=a.length;s&&s+1+l<=n?s+=1+l:(r+=Math.max(1,Math.ceil(l/n)),s=l%n)}}return Math.max(1,r)}function Rn(t){let e=t.background?.padding??0,i=t.text.split(/\r?\n/),n=Math.max(1,...i.map(a=>a.length))*Pn(t),r=t.width??n+e*2,o=Math.max(1,r-e*2),s=Es(t,o);return{width:r,height:s*t.fontSize*(t.lineHeight??1.2)+e*2,lineCount:s,padding:e}}function En(t,e){let i=1-e,n=i*i*i,r=3*i*i*e,o=3*i*e*e,s=e*e*e;return{x:n*t.start.x+r*t.control1.x+o*t.control2.x+s*t.end.x,y:n*t.start.y+r*t.control1.y+o*t.control2.y+s*t.end.y}}function An(t,e,i=192){if(!Number.isInteger(e)||e<1)throw new Error("Path point count must be a positive integer");if(e===1)return[En(t,.5)];let n=Array.from({length:i+1},(l,c)=>En(t,c/i)),r=new Float64Array(n.length);for(let l=1;l<n.length;l+=1){let c=n[l].x-n[l-1].x,d=n[l].y-n[l-1].y;r[l]=r[l-1]+Math.hypot(c,d)}let o=r[r.length-1];if(o<=1e-9)return Array.from({length:e},()=>({...t.start}));let s=[],a=1;for(let l=0;l<e;l+=1){let c=o*l/(e-1);for(;a<r.length-1&&r[a]<c;)a+=1;let d=r[a-1],h=r[a],u=h===d?0:(c-d)/(h-d);s.push({x:n[a-1].x+(n[a].x-n[a-1].x)*u,y:n[a-1].y+(n[a].y-n[a-1].y)*u})}return s}function As(t,e,i){let n=i.x-e.x,r=i.y-e.y,o=n*n+r*r,s=o?Math.max(0,Math.min(1,((t.x-e.x)*n+(t.y-e.y)*r)/o)):0;return Math.hypot(t.x-(e.x+s*n),t.y-(e.y+s*r))}function wi(t,e){let i=1/0;for(let n of e)if(!(n.length<2))for(let r=0,o=n.length-1;r<n.length;o=r++){let s=As(t,n[o],n[r]);s<i&&(i=s)}return i}function Bn(t,e){let i=!1;for(let n=0,r=e.length-1;n<e.length;r=n++){let o=e[n].x,s=e[n].y,a=e[r].x,l=e[r].y;s>t.y!=l>t.y&&t.x<(a-o)*(t.y-s)/(l-s)+o&&(i=!i)}return i}function Bs(t,e,i){let n=Bn(t,e)&&!i.some(o=>Bn(t,o)),r=wi(t,[e,...i]);return n?r:-r}function Oe(t,e,i,n,r){let o=Bs({x:t,y:e},n,r);return{x:t,y:e,h:i,d:o,max:o+i*Math.SQRT2}}var xi=class{constructor(){this.items=[]}get size(){return this.items.length}push(e){let i=this.items;i.push(e);let n=i.length-1;for(;n>0;){let r=n-1>>1;if(i[r].max>=i[n].max)break;[i[r],i[n]]=[i[n],i[r]],n=r}}pop(){let e=this.items,i=e[0],n=e.pop();if(e.length&&n){e[0]=n;let r=0;for(;;){let o=r*2+1,s=o+1,a=r;if(o<e.length&&e[o].max>e[a].max&&(a=o),s<e.length&&e[s].max>e[a].max&&(a=s),a===r)break;[e[a],e[r]]=[e[r],e[a]],r=a}}return i}};function On(t){if(t.length<3)return 0;let e=0;for(let i=0,n=t.length-1;i<t.length;n=i++)e+=(t[n].x+t[i].x)*(t[n].y-t[i].y);return Math.abs(e)/2}function Fn(t,e){return Math.max(0,On(t)-(e??[]).reduce((i,n)=>i+On(n),0))}function Dn(t,e){let i=e??[];if(!t.length)return{point:{x:0,y:0},radius:0};if(t.length<3){let f=t.reduce((g,v)=>g+v.x,0)/t.length,p=t.reduce((g,v)=>g+v.y,0)/t.length;return{point:{x:f,y:p},radius:0}}let n=1/0,r=1/0,o=-1/0,s=-1/0;for(let f of t)f.x<n&&(n=f.x),f.y<r&&(r=f.y),f.x>o&&(o=f.x),f.y>s&&(s=f.y);let a=o-n,l=s-r,c=Math.min(a,l);if(!(c>0))return{point:{x:(n+o)/2,y:(r+s)/2},radius:0};let d=Math.max(a,l)/150,h=new xi,u=c/2;for(let f=n;f<o;f+=c)for(let p=r;p<s;p+=c)h.push(Oe(f+u,p+u,u,t,i));let m=Oe(n+a/2,r+l/2,0,t,i),b=0;for(;h.size;){let f=h.pop();if(!f)break;f.d>m.d&&(m=f),!(f.max-m.d<=d)&&(b>=4e3||(b+=1,u=f.h/2,h.push(Oe(f.x-u,f.y-u,u,t,i)),h.push(Oe(f.x+u,f.y-u,u,t,i)),h.push(Oe(f.x-u,f.y+u,u,t,i)),h.push(Oe(f.x+u,f.y+u,u,t,i))))}return{point:{x:m.x,y:m.y},radius:Math.max(0,m.d)}}function V(t,e,i){return Math.max(e,Math.min(i,t))}function me(t,e,i){return t<e?e:t>i?i:t}var Ul=Math.PI*2;function _n(t,e,i){return Os(t,r=>({x:r.x+e,y:r.y+i}))}function Os(t,e,i=1,n=!1){return{...t,start:e(t.start),segments:t.segments.map(r=>r.kind==="line"?{...r,end:e(r.end)}:r.kind==="arc"?{...r,center:e(r.center),radius:r.radius*Math.abs(i),clockwise:n?!r.clockwise:r.clockwise,end:e(r.end)}:{...r,control1:e(r.control1),control2:e(r.control2),end:e(r.end)})}}var Xl=4/3;function zn(t){let e=new Map,i=new Map;for(let n of t){if(n.type!=="row"||!n.segmentedRow)continue;let r=i.get(n.segmentedRow.groupId)??[];r.push(n),i.set(n.segmentedRow.groupId,r)}for(let[n,r]of i){let o=r.slice().sort((u,m)=>u.segmentedRow.componentIndex-m.segmentedRow.componentIndex),s=o[0]?.segmentedRow?.componentCount??0,a=o[0]?.segmentedRow;if(!a||!(s>=2&&o.length===s&&a?.boundaryBefore==="start"&&o.every((u,m)=>u.segmentedRow?.kind==="segmented-row-v1"&&u.segmentedRow.groupId===n&&u.segmentedRow.componentCount===s&&u.segmentedRow.componentIndex===m&&u.segmentedRow.repeatLabelOnComponents===a.repeatLabelOnComponents&&(m===0?u.segmentedRow.boundaryBefore==="start":u.segmentedRow.boundaryBefore!=="start")&&u.segmentedRow.displayLabel===a.displayLabel)))continue;let c=o.reduce((u,m)=>u+m.seatCount,0),d=0,h=0;for(let u of o)u.segmentedRow.boundaryBefore==="break"&&(d+=1),e.set(u.id,{groupId:n,adjacencyOffset:d,displayOffset:h,displayLabel:a.displayLabel,totalSeats:c,canonical:o[0],viewFromSeatUrl:a.viewFromSeatUrl,viewFromSeatMeta:a.viewFromSeatMeta,confidenceEvidence:a.confidenceEvidence}),d+=u.seatCount,h+=u.seatCount}return e}var Fs="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var Ds="abcdefghijklmnopqrstuvwxyz";function _s(t,e){let i=e.length,n=t+1,r="";for(;n>0;){n-=1;let o=n%i;r=e[o]+r,n=Math.floor(n/i)}return r}function Ii(t,e=!1){let i=e?Ds:Fs;return _s(Math.max(0,Math.floor(t)-1),i)}var zs=[[1e3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];function Nn(t){if(!Number.isFinite(t)||t<=0)return String(t);let e=Math.floor(t),i="";for(let[n,r]of zs)for(;e>=n;)i+=r,e-=n;return i}function Ns(t){let e=new Array(t);return Array.from({length:t},(i,n)=>n).sort((i,n)=>Math.abs(2*i-(t-1))-Math.abs(2*n-(t-1))||i-n).forEach((i,n)=>e[i]=n),e}function Ti(t,e){let i=t.seatLabelStart??1,n=t.seatNumbering?.direction??"ltr",r=t.seatNumbering?.step??1,o=t.seatNumbering?.scheme??"decimal",s=t.seatNumbering?.prefix??"",a=t.seatNumbering?.endAt,l=t.seatCount;if(o==="updown"||o==="updown-descending"){let m=Math.ceil(l/2),b=o==="updown"?e<m?i+2*e:i-1+2*(l-e):e<m?i+2*(m-1-e):i+1+2*(e-m);return`${s}${b}`}let c=o==="odd"||o==="even"?2:r,d=a!=null&&Number.isFinite(a)?a-(l-1)*c:i,h=n==="center"?Ns(l)[e]:n==="rtl"?l-1-e:e,u;switch(o){case"odd":{let m=d%2===1?d:d+1;u=String(m+h*2);break}case"even":{let m=d%2===0?d:d+1;u=String(m+h*2);break}case"roman":u=Nn(d+h*r);break;case"letters-upper":u=Ii(d+h*r,!1);break;case"letters-lower":u=Ii(d+h*r,!0);break;default:u=String(d+h*r);break}return`${s}${u}`}function Gs(t){return{...t.canonical,seatCount:t.totalSeats,label:t.displayLabel,displayLabel:t.displayLabel}}function Gn(t,e,i){return i?.label??`${t.label}-${Ti(t,e)}`}function Li(t,e,i,n){if(n?.displayLabel)return n.displayLabel;if(!i)return`${t.displayLabel??t.label}-${Ti(t,e)}`;let r=Gs(i),o=i.displayOffset+e;return`${i.displayLabel}-${Ti(r,o)}`}var Fe=.02291666666666667,De=1/Fe,Hs=58,Pi=Hs*Fe,Hn=0,jn=3,Vn=0,Ci=120,Vs=0,js=45,Ws=7,W=1.2;function Mi(t,e,i,n){return Number.isFinite(t)?Math.max(e,Math.min(i,t)):n}function Wn(t){return Number.isFinite(t)?Math.max(Hn,Math.min(jn,Math.round(t))):Hn}function Ks(t){return!Number.isFinite(t)||!Number.isInteger(t)||t<0?0:t<=Ws?t:jn}function xe(t,e={}){let i=Mi(e.floorBaseHeightM,Vn,Ci,0),n=Math.min(Ci,i+Ks(t.elevation)*Pi),r=t.height===void 0?n:Mi(t.height,Vn,Ci,n),o=Mi(t.rake,Vs,js,0);return{height:r,rake:o}}function Kn(t){let e=t.length;return e<=3?[...t]:[t[Math.floor(e*.25)],t[Math.floor(e*.5)],t[Math.floor(e*.75)]]}function Un(t,e,i){if(!t.length)return 1/0;if(t.length===1)return Math.hypot(e-t[0].x,i-t[0].y);let n=1/0;for(let r=0;r+1<t.length;r++){let o=t[r],s=t[r+1],a=s.x-o.x,l=s.y-o.y,c=a*a+l*l,d=c>1e-12?((e-o.x)*a+(i-o.y)*l)/c:0;d<0?d=0:d>1&&(d=1);let h=Math.hypot(e-(o.x+d*a),i-(o.y+d*l));h<n&&(n=h)}return n}function Us(t){let e=0,i=0;for(let o of t)e+=o.x,i+=o.y;let n=t.length||1;e/=n,i/=n;let r=0;for(let o of t){let s=Math.hypot(o.x-e,o.y-i);s>r&&(r=s)}return{cx:e,cy:i,r}}function Xn(t,e){return Math.hypot(t.cx-e.cx,t.cy-e.cy)-t.r-e.r}function Ri(t,e){let i=1/0;for(let n of Kn(t)){let r=Un(e,n.x,n.y);r<i&&(i=r)}for(let n of Kn(e)){let r=Un(t,n.x,n.y);r<i&&(i=r)}return i}function Xs(t,e){if(t.length<3)return{pts:t,seatIndices:e};let i=0,n=0;for(let d of t)i+=d.x,n+=d.y;i/=t.length,n/=t.length;let r=-1,o=t[0];for(let d of t){let h=Math.hypot(d.x-i,d.y-n);h>r&&(r=h,o=d)}let s=o.x-i,a=o.y-n,l=Math.hypot(s,a);l>1e-9?(s/=l,a/=l):(s=1,a=0);let c=t.map((d,h)=>({p:d,i:h,t:(d.x-i)*s+(d.y-n)*a})).sort((d,h)=>d.t-h.t);return{pts:c.map(d=>d.p),seatIndices:c.map(d=>e[d.i])}}function Ys(t){let e=t.length;if(e<3)return null;let i=0,n=0;for(let v of t)i+=v.x,n+=v.y;i/=e,n/=e;let r=0,o=0,s=0,a=0,l=0,c=0,d=0;for(let v of t){let y=v.x-i,x=v.y-n;r+=y*y,s+=x*x,o+=y*x,a+=y*y*y,l+=x*x*x,c+=y*x*x,d+=x*y*y}let h=r*s-o*o;if(Math.abs(h)<1e-9)return null;let u=(a+c)/2,m=(l+d)/2,b=(u*s-m*o)/h,f=(m*r-u*o)/h,p=b+i,g=f+n;return!Number.isFinite(p)||!Number.isFinite(g)?null:{cx:p,cy:g}}var qs=.15;function $s(t){if(t.length<2)return null;let e=t.map(v=>{let y=0,x=0;for(let I of v.pts)y+=I.x,x+=I.y;return{x:y/v.pts.length,y:x/v.pts.length}}),i=0,n=0;for(let v of e)i+=v.x,n+=v.y;i/=e.length,n/=e.length;let r=0,o=0,s=0;for(let v of e){let y=v.x-i,x=v.y-n;r+=y*y,o+=y*x,s+=x*x}let a=r+s,l=r*s-o*o,c=a/2+Math.sqrt(Math.max(0,a*a/4-l)),d,h;Math.abs(o)>1e-12?(d=c-s,h=o):r>=s?(d=1,h=0):(d=0,h=1);let u=Math.hypot(d,h);if(!(u>1e-12))return null;d/=u,h/=u;let m=1/0,b=-1/0,f=[];for(let v of t){let y=1/0,x=-1/0;for(let I of v.pts){let k=I.x*d+I.y*h;k<y&&(y=k),k>x&&(x=k),k<m&&(m=k),k>b&&(b=k)}f.push(x-y)}let p=b-m;return p>1e-9?(f.sort((v,y)=>v-y),f[Math.min(f.length-1,Math.floor(f.length*.9))]/p<=Zs?{x:d,y:h}:null):null}var Zs=.35;function Yn(t,e,i,n){let r=new Map;for(let p of i){let g=e[p],v=g.rowId||`__seat-${p}`,y=r.get(v);y||(y={pts:[],idx:[]},r.set(v,y)),y.pts.push({x:g.x,y:g.y}),y.idx.push(p)}if(!r.size)return{sectionId:t,rows:[],blockCount:0};let o=[];for(let[p,g]of r){let v=Xs(g.pts,g.idx),y=0;for(let x of v.pts)y+=Math.hypot(x.x-n.x,x.y-n.y);o.push({id:p,pts:v.pts,seatIndices:v.seatIndices,blockId:-1,ordinal:0,blockDepth:0,focalDistance:y/v.pts.length})}let s=o.map(p=>Us(p.pts)),a=[];for(let p=0;p<o.length;p++){let g=1/0;for(let v=0;v<o.length;v++){if(p===v||Xn(s[p],s[v])>=g)continue;let y=Ri(o[p].pts,o[v].pts);y<g&&(g=y)}Number.isFinite(g)&&a.push(g)}a.sort((p,g)=>p-g);let l=a.length?a[Math.floor(a.length/2)]:1,c=Math.max(l*1.8,1e-6),d=o.map(()=>[]);for(let p=0;p<o.length;p++)for(let g=p+1;g<o.length;g++)Xn(s[p],s[g])>c||Ri(o[p].pts,o[g].pts)<=c&&(d[p].push(g),d[g].push(p));let h=0;for(let p=0;p<o.length;p++){if(o[p].blockId!==-1)continue;let g=h++,v=[p];for(o[p].blockId=g;v.length;){let y=v.pop();for(let x of d[y])o[x].blockId===-1&&(o[x].blockId=g,v.push(x))}}let u=new Map;for(let p of o){let g=u.get(p.blockId)??[];g.push(p),u.set(p.blockId,g)}let m=[];for(let p of o){if(p.pts.length<4)continue;let g=Ys(p.pts);g&&(!Number.isFinite(g.cx)||!Number.isFinite(g.cy)||m.push({x:g.cx,y:g.cy}))}let b=m.length>=2?(()=>{let p=m.map(y=>y.x).sort((y,x)=>y-x),g=m.map(y=>y.y).sort((y,x)=>y-x),v=Math.floor(m.length/2);return{cx:p[v],cy:g[v]}})():null;if(b){let p=k=>Math.hypot(k.x-b.cx,k.y-b.cy),g=1/0,v=-1/0,y=[];for(let k of o){let w=1/0,M=-1/0;for(let C of k.pts){let L=p(C);L<w&&(w=L),L>M&&(M=L)}y.push(M-w),w<g&&(g=w),M>v&&(v=M)}let x=v-g;y.sort((k,w)=>k-w);let I=y[Math.min(y.length-1,Math.floor(y.length*.9))];if(x>1e-9&&I/x<=qs){let k=o.map(S=>{let T=0;for(let E of S.pts)T+=p(E);return{row:S,radius:T/S.pts.length}}),w=1/0;for(let S of k)S.radius<w&&(w=S.radius);k.sort((S,T)=>S.radius-T.radius);let M=-1,C=-1/0,L=x/Math.max(1,k.length)*.5,R=[];for(let S of k)S.radius-C>L&&(M++,C=S.radius),S.row.ordinal=M,S.row.blockDepth=S.radius-w,R.push(S.row);return{sectionId:t,rows:R,blockCount:h}}}let f=[];for(let[,p]of u){let g=$s(p);if(g){let v=x=>{let I=0;for(let k of x.pts)I+=k.x*g.x+k.y*g.y;return I/x.pts.length};p.sort((x,I)=>v(x)-v(I));let y=0;for(let x=0;x<p.length;x++)x>0&&(y+=Ri(p[x-1].pts,p[x].pts)),p[x].ordinal=x,p[x].blockDepth=y,f.push(p[x])}else{let v=1/0;for(let y of p)y.focalDistance<v&&(v=y.focalDistance);p.sort((y,x)=>y.focalDistance-x.focalDistance);for(let y=0;y<p.length;y++)p[y].ordinal=y,p[y].blockDepth=Math.max(0,p[y].focalDistance-v),f.push(p[y])}}return{sectionId:t,rows:f,blockCount:h}}function Qn(t){return t?t.accessibility&&t.accessibility.length?t.wheelchairSpaceType&&!t.accessibility.includes("wheelchair")?["wheelchair",...t.accessibility]:t.accessibility:t.wheelchairSpaceType?["wheelchair"]:t.accessible?["wheelchair"]:[]:[]}var Bt=Math.PI/180,Qs=9,_e=16;function Ai(t,e,i,n){let r=i*Bt,o=Math.cos(r),s=Math.sin(r);return{x:n.x+t*o-e*s,y:n.y+t*s+e*o}}function Oi(t){let{seatCount:e,seatSpacing:i,curve:n,rotation:r,origin:o}=t,s=[];if(t.path)return An(t.path,e);if(e<=1)return e===1&&s.push({x:o.x,y:o.y}),s;if(n===0){for(let c=0;c<e;c++)s.push(Ai(c*i,0,r,o));return s}let a=n/(e-1)*Bt,l=i/(2*Math.sin(Math.abs(a)/2));for(let c=0;c<e;c++){let d=c*a,h=l*Math.sin(d),u=-l+l*Math.cos(d);s.push(Ai(h,u,r,o))}return s}function Js(t){let e=new Map;if(t.overrides)for(let i of t.overrides)e.set(i.index,i);return e}function ea(t){let e=new Set((t.overrides??[]).filter(i=>i.skip&&Number.isInteger(i.index)&&i.index>=0&&i.index<t.seatCount).map(i=>i.index));return Math.max(0,t.seatCount-e.size)}function Jn(t,e){let i=Js(t);return Oi(t).map((n,r)=>{let o=i.get(r),s=Qn(o),a=Gn(t,r,o),l={...t.commercial,...o?.commercial};return{index:r,x:n.x+(o?.dx??0),y:n.y+(o?.dy??0),label:a,displayLabel:Li(t,r,e,o),categoryKey:o?.categoryKey??t.categoryKey,skipped:!!o?.skip,accessible:s.length>0,accessibility:s,wheelchairSpaceType:o?.wheelchairSpaceType,commercial:Object.values(l).some(c=>c!==void 0&&c!==!1&&c!=="")?l:void 0,viewUrl:o?.viewFromSeatUrl??t.viewFromSeatUrl,viewMeta:o?.viewFromSeatUrl?o.viewFromSeatMeta:t.viewFromSeatMeta,labelStyle:o?.labelStyle}})}function st(t){let e=[];for(let i of Jn(t))i.skipped||e.push({id:`${t.id}:${i.index}`,label:i.label,displayLabel:i.displayLabel===i.label?void 0:i.displayLabel,x:i.x,y:i.y,rowId:t.id,categoryKey:i.categoryKey,accessible:i.accessible||void 0,accessibility:i.accessibility.length?i.accessibility:void 0,wheelchairSpaceType:i.wheelchairSpaceType,commercial:i.commercial,viewUrl:i.viewUrl,viewMeta:i.viewMeta,labelStyle:i.labelStyle});return e}function er(t){if(t.seatCountsBySide)return{...t.seatCountsBySide};let e=t.sides&&t.sides.length?t.sides:["top","bottom"],i=["top","bottom","left","right"].filter(o=>e.includes(o)),n={top:0,bottom:0,left:0,right:0};if(!i.length)return n;let r=Math.max(0,Math.round(t.seatCount));for(let o=0;o<r;o++)n[i[o%i.length]]+=1;return n}function Fi(t){let e=[],i=Math.max(0,Math.round(t.seatCount));if(i===0)return e;let n=new Map((t.overrides??[]).map(d=>[d.index,d])),r=(d,h,u,m)=>{let b=n.get(d),f=Qn(b),p=b?.label??`${t.label}-${d+1}`,g=t.displayLabel??t.label;return{index:d,label:p,displayLabel:b?.displayLabel??`${g}-${d+1}`,x:h+(b?.dx??0),y:u+(b?.dy??0),categoryKey:b?.categoryKey??t.categoryKey,skipped:!!b?.skip,accessible:f.length>0,accessibility:f,wheelchairSpaceType:b?.wheelchairSpaceType,commercial:b?.commercial,viewUrl:b?.viewFromSeatUrl,viewMeta:b?.viewFromSeatUrl?b.viewFromSeatMeta:void 0,labelStyle:b?.labelStyle,...m?{side:m}:{}}};if(t.shape==="round"){let d=(t.radius??40)+_e,h=t.rotation*Bt,u=Math.max(0,Math.min(360,t.seatArc??360));if(u>=360||i===1){for(let p=0;p<i;p++){let g=h+p/i*2*Math.PI;e.push(r(p,t.center.x+d*Math.cos(g),t.center.y+d*Math.sin(g)))}return e}let m=u*Bt,b=(2*Math.PI-m)/2,f=h+b;for(let p=0;p<i;p++){let g=f+p/(i-1)*m;e.push(r(p,t.center.x+d*Math.cos(g),t.center.y+d*Math.sin(g)))}return e}let o=t.width??80,s=t.height??50,a=er(t),l=["top","bottom","left","right"],c=0;for(let d of l){let h=a[d];for(let u=0;u<h;u++){let m,b;d==="top"?(m=-o/2+(u+.5)*o/h,b=-s/2-_e):d==="bottom"?(m=-o/2+(u+.5)*o/h,b=s/2+_e):d==="left"?(m=-o/2-_e,b=-s/2+(u+.5)*s/h):(m=o/2+_e,b=-s/2+(u+.5)*s/h);let f=Ai(m,b,t.rotation,t.center);e.push(r(c++,f.x,f.y,d))}}return e}function ta(t){return t.bookAsWhole||t.variableOccupancy?Math.max(0,Math.round(t.seatCount)):Fi(t).filter(e=>!e.skipped).length}function ze(t){return Fi(t).filter(e=>!e.skipped).map(e=>({id:`${t.id}:${e.index}`,label:e.label,...e.displayLabel!==e.label?{displayLabel:e.displayLabel}:{},x:e.x,y:e.y,rowId:t.id,categoryKey:e.categoryKey,...e.accessible?{accessible:!0}:{},...e.accessibility.length?{accessibility:e.accessibility}:{},...e.wheelchairSpaceType?{wheelchairSpaceType:e.wheelchairSpaceType}:{},...e.commercial?{commercial:e.commercial}:{},...e.viewUrl?{viewUrl:e.viewUrl}:{},...e.viewUrl&&e.viewMeta?{viewMeta:e.viewMeta}:{},...e.labelStyle?{labelStyle:e.labelStyle}:{}}))}function Ot(t){return[{id:`${t.id}:0`,label:t.label,...t.displayLabel&&t.displayLabel!==t.label?{displayLabel:t.displayLabel}:{},x:t.center.x,y:t.center.y,rowId:t.id,categoryKey:t.categoryKey,kind:"booth"}]}function Bi(t,e){let i=!1;for(let n=0,r=e.length-1;n<e.length;r=n++){let o=e[n].x,s=e[n].y,a=e[r].x,l=e[r].y;s>t.y!=l>t.y&&t.x<(a-o)*(t.y-s)/(l-s)+o&&(i=!i)}return i}function ia(t,e){return e.some((i,n)=>{let r=e[(n+1)%e.length],o=(t.y-i.y)*(r.x-i.x)-(t.x-i.x)*(r.y-i.y);if(Math.abs(o)>1e-7)return!1;let s=(t.x-i.x)*(r.x-i.x)+(t.y-i.y)*(r.y-i.y),a=(r.x-i.x)**2+(r.y-i.y)**2;return s>=-1e-7&&s<=a+1e-7})}function Y(t,e,i){return Bi(t,e)&&!(i??[]).some(n=>Bi(t,n)||ia(t,n))}function at(t,e){return Dn(t,e).point}function Ei(t){if(!t.length)return{x:0,y:0};let e=0,i=0;for(let n of t)e+=n.x,i+=n.y;return{x:e/t.length,y:i/t.length}}function tr(t){switch(t.type){case"row":{let e=st(t);if(!e.length)return{x:t.origin.x,y:t.origin.y};let i=0,n=0;for(let r of e)i+=r.x,n+=r.y;return{x:i/e.length,y:n/e.length}}case"table":case"booth":return{x:t.center.x,y:t.center.y};case"gaArea":return Ei(t.points);case"section":return Ei(t.outline);case"text":return{x:t.position.x,y:t.position.y};case"shape":return t.points&&t.points.length?Ei(t.points):t.x!=null&&t.y!=null&&t.width!=null&&t.height!=null?{x:t.x+t.width/2,y:t.y+t.height/2}:{x:t.x??0,y:t.y??0};case"decorImage":return{x:t.x+t.width/2,y:t.y+t.height/2}}}function qn(t,e){return t.length===e.length&&t.every((i,n)=>i.x===e[n].x&&i.y===e[n].y)}function na(t,e){if(t.type!=="gaArea"||!qn(t.points,e.outline))return!1;let i=t.holes??[],n=e.holes??[];return i.length===n.length&&i.every((r,o)=>qn(r,n[o]))}function Ft(t,e){let i=t.filter(s=>s.type==="section"),n="referenceInventorySource"in e?e.referenceInventorySource?.logicalSectionId:void 0,r=tr(e);return(n?i.find(s=>(s.logicalSectionId??s.id)===n&&(na(e,s)||Y(r,s.outline,s.holes))):void 0)??i.find(s=>Y(r,s.outline,s.holes))}function Ne(t){return t.floors&&t.floors.length?t.floors:[{id:"floor-0",name:"Main",objects:t.objects,focalPoint:t.focalPoint,referenceImage:t.referenceImage,backgroundImage:t.backgroundImage}]}function ra(t,e){let i=Ne(t);return(e?i.find(n=>n.id===e):i[0])?.objects??[]}function ae(t){return t.floors&&t.floors.length?t.floors.flatMap(e=>e.objects):t.objects}function Di(t,e,i){let n=o=>({x:o.x+e,y:o.y+i}),r=o=>o.map(n);switch(t.type){case"row":return{...t,origin:n(t.origin)};case"table":case"booth":return{...t,center:n(t.center)};case"gaArea":return{...t,points:r(t.points),...t.holes?{holes:t.holes.map(r)}:{}};case"section":return{...t,outline:r(t.outline),...t.outlinePath?{outlinePath:_n(t.outlinePath,e,i)}:{},...t.holes?{holes:t.holes.map(r)}:{}};case"text":return{...t,position:n(t.position)};case"shape":return{...t,...t.points?{points:r(t.points)}:{},...t.x!=null?{x:t.x+e}:{},...t.y!=null?{y:t.y+i}:{}};case"decorImage":return{...t,x:t.x+e,y:t.y+i}}}function _i(t,e=900){if(!t.floors||t.floors.length<2)return t;let i=[];return t.floors.forEach((n,r)=>{let o=-r*e;for(let s of n.objects)i.push(o===0?s:Di(s,0,o))}),{...t,objects:i,floors:void 0}}function zi(t){let e=t.floors;if(!e||e.length<2)return t;let i=ir(t),n=[];return e.forEach((r,o)=>{let{x:s,y:a}=i[o];for(let l of r.objects)n.push(Di(l,s,a))}),{...t,objects:n,floors:void 0,referenceImage:void 0,backgroundImage:void 0}}function ir(t){let e=t.floors;if(!e?.length)return[{x:0,y:0}];if(e.length<2)return e.map(()=>({x:0,y:0}));let i=e.map(u=>Dt({...t,objects:u.objects,floors:void 0,focalPoint:u.focalPoint,referenceImage:void 0,backgroundImage:void 0})),n=Math.max(1,...i.map(u=>Math.max(u.width,u.height))),r=Math.max(64,Math.min(240,n*.08)),o=16/10,s=null;for(let u=1;u<=e.length;u+=1){let m=Math.ceil(e.length/u),b=new Array(u).fill(0),f=new Array(m).fill(0);i.forEach((x,I)=>{let k=I%u,w=Math.floor(I/u);b[k]=Math.max(b[k],x.width),f[w]=Math.max(f[w],x.height)});let p=b.reduce((x,I)=>x+I,0)+r*(u-1),g=f.reduce((x,I)=>x+I,0)+r*(m-1),v=u*m-e.length,y=Math.abs(Math.log(p/Math.max(1,g)/o))+v*.04;(!s||y<s.score)&&(s={columns:u,columnWidths:b,rowHeights:f,score:y})}let{columns:a,columnWidths:l,rowHeights:c}=s,d=[],h=[];return l.reduce((u,m,b)=>(d[b]=u,u+m+r),0),c.reduce((u,m,b)=>(h[b]=u,u+m+r),0),e.map((u,m)=>{let b=i[m],f=m%a,p=Math.floor(m/a),g=d[f]+(l[f]-b.width)/2,v=h[p]+(c[p]-b.height)/2;return{x:g-b.x,y:v-b.y}})}function $n(t,e,i,n,r,o){let s=[],a=zn(t),l=h=>!h?.eventConfigurationId||h.eventConfigurationId===n,c=h=>!!h&&(!h.eventConfigurationId||h.eventConfigurationId===n),d=(h,u)=>c(h)?{...h,coverage:u}:void 0;for(let h of t){let u=[];if(h.type==="row"?u=st(h):h.type==="table"?u=ze(h):h.type==="booth"&&(u=Ot(h)),!u.length)continue;for(let g of u)g.viewUrl&&!l(g.viewMeta)&&(g.viewUrl=void 0,g.viewMeta=void 0);if(h.type==="row"){let g=a.get(h.id);if(g){let v=new Map((h.overrides??[]).map(y=>[y.index,y]));for(let y of u){let x=Number(y.id.slice(y.id.lastIndexOf(":")+1));if(!Number.isInteger(x))continue;y.logicalRowId=g.groupId,y.logicalSeatIndex=g.adjacencyOffset+x,v.get(x)?.displayLabel||(y.displayLabel=Li(h,x,g)),!y.viewUrl&&g.viewFromSeatUrl&&l(g.viewFromSeatMeta)&&(y.viewUrl=g.viewFromSeatUrl,y.viewMeta=g.viewFromSeatMeta);let I=v.get(x)?.confidenceEvidence;y.confidenceEvidence=d(I,"exact-seat")??d(h.confidenceEvidence,"row-representative")??d(g.confidenceEvidence,"row-representative")}}}let m=Ft(t,h),b=m?.viewFromSeatUrl,p=(m?.zone?e?.find(g=>g.id===m.zone):void 0)?.focalPoint??i;for(let g of u){if(!g.confidenceEvidence){let v=Number(g.id.slice(g.id.lastIndexOf(":")+1)),y=(h.type==="row"||h.type==="table")&&Number.isInteger(v)?h.overrides?.find(x=>x.index===v)?.confidenceEvidence:void 0;g.confidenceEvidence=d(y,"exact-seat")??(h.type==="row"?d(h.confidenceEvidence,"row-representative"):void 0)}g.confidenceEvidence??=d(m?.confidenceEvidence,"section-representative")??(o?d(o.evidence,o.coverage):void 0),!g.viewUrl&&b&&l(m?.viewFromSeatMeta)&&(g.viewUrl=b,g.viewMeta=m?.viewFromSeatMeta),!g.viewUrl&&r&&l(r.meta)&&(g.viewUrl=r.url,g.viewMeta=r.meta),m&&(g.sectionId=m.logicalSectionId??m.id),m?.zone&&(g.zoneId=m.zone),p&&(g.focalPoint={...p})}s.push(...u)}return s}function be(t,e={}){if(t.floors?.length){let n=[];for(let r of t.floors){let o=r.focalPoint??t.focalPoint,s=r.viewFromSeatUrl?{url:r.viewFromSeatUrl,meta:r.viewFromSeatMeta}:t.viewFromSeatUrl?{url:t.viewFromSeatUrl,meta:t.viewFromSeatMeta}:void 0,a=r.confidenceEvidence?{evidence:r.confidenceEvidence,coverage:"floor-representative"}:t.confidenceEvidence?{evidence:t.confidenceEvidence,coverage:"venue-representative"}:void 0,l=$n(r.objects,t.zones,o,t.eventConfigurationId,s,a);e.resolveEyeHeights!==!1&&Zn(r.objects,r.focalPoint??t.focalPoint,r.baseHeightM??0,l),n.push(...l)}return n}let i=$n(t.objects,t.zones,t.focalPoint,t.eventConfigurationId,t.viewFromSeatUrl?{url:t.viewFromSeatUrl,meta:t.viewFromSeatMeta}:void 0,t.confidenceEvidence?{evidence:t.confidenceEvidence,coverage:"venue-representative"}:void 0);return e.resolveEyeHeights!==!1&&Zn(t.objects,t.focalPoint,e.floorBaseHeightM??0,i),i}function Zn(t,e,i,n){let r=t.filter(d=>d.type==="section"),o=i>0||r.some(d=>d.height!==void 0||d.rake!==void 0||(d.elevation??0)>0);if(!r.length||!o||!e){for(let d of n)d.eyeHeightM=i+W;return}let s=new Array(n.length),a=new Map,l=new Map;for(let d=0;d<n.length;d++){let h=n[d],u=r.find(b=>Y({x:h.x,y:h.y},b.outline,b.holes))??null;if(s[d]=u,!u)continue;a.has(u.id)||a.set(u.id,xe(u,{floorBaseHeightM:i}));let m=l.get(u.id);m?m.push(d):l.set(u.id,[d])}let c=new Array(n.length).fill(void 0);for(let[d,h]of l){let u=a.get(d);if(!u)continue;let m=u.rake>0?Math.tan(u.rake*Math.PI/180):0,b=Yn(d,n,h,e);for(let f of b.rows){let p=f.blockDepth*Fe*m,g=u.height+p;for(let v of f.seatIndices)c[v]=g}}for(let d=0;d<n.length;d++){let h=n[d],u=s[d];if(!u){h.eyeHeightM=i+W;continue}let m=a.get(u.id);h.eyeHeightM=(c[d]??m.height)+W}}var At=40;function Dt(t){let e=1/0,i=1/0,n=-1/0,r=-1/0,o=(s,a)=>{s<e&&(e=s),a<i&&(i=a),s>n&&(n=s),a>r&&(r=a)};for(let s of ae(t))if(s.type==="row"){let a=new Map((s.overrides??[]).map(l=>[l.index,l]));Oi(s).forEach((l,c)=>{let d=a.get(c);d?.skip||o(l.x+(d?.dx??0),l.y+(d?.dy??0))})}else if(s.type==="gaArea")for(let a of s.points)o(a.x,a.y);else if(s.type==="section")for(let a of s.outline)o(a.x,a.y);else if(s.type==="decorImage")o(s.x,s.y),o(s.x+s.width,s.y+s.height);else if(s.type==="shape")if(s.points&&s.points.length)for(let a of s.points)o(a.x,a.y);else s.x!=null&&s.y!=null&&s.width!=null&&s.height!=null&&(o(s.x,s.y),o(s.x+s.width,s.y+s.height));else if(s.type==="table"){let a=_e+Qs,l=s.shape==="round"?(s.radius??40)+a:Math.max((s.width??80)/2,(s.height??50)/2)+a;o(s.center.x-l,s.center.y-l),o(s.center.x+l,s.center.y+l)}else if(s.type==="booth"){let a=Math.max(s.width,s.height)/2;o(s.center.x-a,s.center.y-a),o(s.center.x+a,s.center.y+a)}else if(s.type==="text"){let a=Rn(s);o(s.position.x,s.position.y),o(s.position.x+a.width,s.position.y+a.height)}for(let s of[t.referenceImage,t.backgroundImage]){if(!s)continue;let{center:a,width:l}=s,c=l*3/4;o(a.x-l/2,a.y-c/2),o(a.x+l/2,a.y+c/2)}if(!isFinite(e)){let s=t.focalPoint??{x:0,y:0};return{x:s.x-200,y:s.y-200,width:400,height:400}}return{x:e-At,y:i-At,width:n-e+At*2,height:r-i+At*2}}var nr="__sl_ga__",_t=1e5,oa=1e5;function rr(t,e){return`${nr}${encodeURIComponent(t)}__${e+1}`}function or(t){let e=t.inventorySegments;if(e===void 0)return!0;if(!Array.isArray(e)||e.length<1||e.length>256)return!1;let i=0,n=new Map;for(let r of e){if(!r||typeof r.sourceAreaId!="string"||!r.sourceAreaId.trim()||r.sourceAreaId.length>160||!Number.isInteger(r.startIndex)||r.startIndex<0||!Number.isInteger(r.count)||r.count<1||r.startIndex+r.count>_t||(i+=r.count,i>_t))return!1;let o=n.get(r.sourceAreaId)??[],s=r.startIndex+r.count;if(o.some(a=>r.startIndex<a.end&&s>a.start))return!1;o.push({start:r.startIndex,end:s}),n.set(r.sourceAreaId,o)}return i===t.capacity}function Ni(t){let e=Math.min(_t,Math.max(0,Math.floor(t.capacity)));return t.inventorySegments===void 0?e?[{sourceAreaId:t.id,startIndex:0,count:e}]:[]:or(t)?t.inventorySegments.map(i=>({...i})):[]}function Ge(t){return Ni(t).flatMap(e=>Array.from({length:e.count},(i,n)=>rr(e.sourceAreaId,e.startIndex+n)))}function sa(t,e){if(t.inventorySegments===void 0||e===t.capacity)return t.inventorySegments;if(e<t.capacity)return;let i=Ni(t);if(!i.length)return;let n=e-t.capacity;if(!n)return i;let o=i.filter(a=>a.sourceAreaId===t.id).reduce((a,l)=>Math.max(a,l.startIndex+l.count),0),s=i[i.length-1];if(s?.sourceAreaId===t.id&&s.startIndex+s.count===o)s.count+=n;else{if(i.length>=256)return;i.push({sourceAreaId:t.id,startIndex:o,count:n})}return i}function lt(t){return ae(t).filter(e=>e.type==="gaArea")}function aa(t){return t.startsWith(nr)}var He="__ungrouped__";function la(t){return t.type==="row"?st(t).map(e=>e.label):t.type==="table"?ze(t).map(e=>e.label):t.type==="booth"?Ot(t).map(e=>e.label):t.type==="gaArea"?Ge(t):[]}function ca(t){return t.type==="row"||t.type==="table"||t.type==="booth"||t.type==="gaArea"}function ct(t){let e=ae(t),i=e.filter(s=>s.type==="section"),n=new Map;for(let s of i){let a=s.logicalSectionId??s.id;n.get(a)||n.set(a,{id:a,label:s.displayLabel||s.label||"Section",zone:s.zone,seatCount:0,objectIds:[],seatLabels:[]})}let r={id:He,label:"Other seats",seatCount:0,objectIds:[],seatLabels:[]},o=new Map;for(let s of e){if(!ca(s))continue;let a=la(s);if(a.length===0)continue;let l=Ft(e,s),c=l?n.get(l.logicalSectionId??l.id):r;c.seatCount+=a.length,c.objectIds.push(s.id),c.seatLabels.push(...a),o.set(s.id,c.id)}return{sections:[...n.values()],ungrouped:r.objectIds.length?r:null,objectToSection:o}}function sr(t,e){return e.has(t.id)||!!t.logicalSectionId&&e.has(t.logicalSectionId)||!!t.zone&&e.has(t.zone)}function ar(t,e){let i=new Set;if(!e.size)return i;let{sections:n,ungrouped:r,objectToSection:o}=ct(t),s=new Set,a=new Map(n.map(c=>[c.id,c.zone]));for(let c of n){let d=a.get(c.id);(e.has(c.id)||d&&e.has(d))&&s.add(c.id)}let l=!!r&&e.has(He);for(let[c,d]of o)(s.has(d)||l&&d===He)&&i.add(c);return i}function Gi(t,e){if(!e.size)return t;let i=ar(t,e),n=e instanceof Set?e:new Set(e),r=s=>!(i.has(s.id)||s.type==="section"&&sr(s,n));if(t.floors&&t.floors.length){let s=!1,a=t.floors.map(l=>{let c=l.objects.filter(r);return c.length!==l.objects.length&&(s=!0),c.length===l.objects.length?l:{...l,objects:c}});return s?{...t,floors:a,objects:a[0].objects}:t}let o=t.objects.filter(r);return o.length===t.objects.length?t:{...t,objects:o}}var lr=/^#?([\da-f]{3}|[\da-f]{6})$/i,da=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*([\d.]+))?\s*\)$/i;function Z(t){let e=lr.exec((t??"").trim());if(!e)return null;let i=e[1].length===3?e[1].split("").map(r=>r+r).join(""):e[1],n=parseInt(i,16);return[n>>16&255,n>>8&255,n&255]}function ua({r:t,g:e,b:i}){let n=r=>Math.max(0,Math.min(255,Math.round(r))).toString(16).padStart(2,"0");return`#${n(t)}${n(e)}${n(i)}`}function dt(t,e,i){return ua({r:t,g:e,b:i})}function ji(t){let e=t.trim(),i=lr.exec(e);if(i&&e.startsWith("#"))return`#${(i[1].length===3?i[1].split("").map(s=>s+s).join(""):i[1]).toLowerCase()}`;let n=da.exec(e);if(!n||n[4]!=null&&Number(n[4])<.999)return null;let r=[Number(n[1]),Number(n[2]),Number(n[3])];return r.some(o=>!Number.isInteger(o)||o<0||o>255)?null:`#${r.map(o=>o.toString(16).padStart(2,"0")).join("")}`}function Hi(t){let e=t/255;return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function Vi(t){return .2126*Hi(t[0])+.7152*Hi(t[1])+.0722*Hi(t[2])}function cr(t,e){let i=Z(t),n=Z(e);if(!i||!n)return null;let r=Vi(i),o=Vi(n);return(Math.max(r,o)+.05)/(Math.min(r,o)+.05)}function ha(t){let e=t.trim();if(e.startsWith("#")){let n=Z(e);return n?(.2126*n[0]+.7152*n[1]+.0722*n[2])/255:NaN}let i=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/.exec(e);return i?(.2126*+i[1]+.7152*+i[2]+.0722*+i[3])/255:NaN}function ut(t,e=.6){let i=ha(t);return!Number.isNaN(i)&&i>e}function we(t,e){let i=Z(t);return i?dt(...i.map(n=>n+(255-n)*e)):t}function ge(t,e){let i=Z(t);return i?dt(...i.map(n=>n*(1-e))):t}function zt(t,e,i){let n=Z(t),r=Z(e);return!n||!r?t:dt(n[0]+(r[0]-n[0])*i,n[1]+(r[1]-n[1])*i,n[2]+(r[2]-n[2])*i)}function Wi(t,e){let i=0,n=0,r=0,o=0;for(let s of t){let a=Z(s.hex);!a||s.w<=0||(i+=a[0]*s.w,n+=a[1]*s.w,r+=a[2]*s.w,o+=s.w)}return o>0?dt(i/o,n/o,r/o):e}function dr(t,e){let i=Z(t);if(!i)return t;let n=.2126*i[0]+.7152*i[1]+.0722*i[2];return dt(...i.map(r=>r+(n-r)*e))}function pa(t,e){let i=Z(t);return i?`rgba(${i[0]},${i[1]},${i[2]},${e})`:t}var le=pa;var ye=7,Ve=10,ur=15,hr=11,je=.85,Q=12,fa=4.5;var Nt="#000000",Gt="#ffffff";function Ie(t,e){return t*e>=Q}var ce=24,pr={wheelchair:"M7.8 4.5a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM8 7L10.5 7L10.5 15L8 15ZM8 12.5L18 12.5L18 15L8 15ZM16 15L18 15L18 18L16 18ZM5.5 16a5.5 5.5 0 1 0 11 0a5.5 5.5 0 1 0 -11 0zM8 16a3 3 0 1 1 6 0a3 3 0 1 1 -6 0z",companion:"M5.5 6.5a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM4.5 18.5L6 11.5L11 11.5L12.5 18.5ZM12.5 7.5a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM11.5 19L13 12.5L18 12.5L19.5 19Z","semi-ambulatory":"M8.3 3.8a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM9 6.2L12 6.6L11 13.5L8.6 13L9 6.2ZM8.6 13L11 13L9.5 21L7 21ZM10.4 13L12.6 13L13.6 21L11.2 21ZM11.2 7.2L14 8L14.6 9.6L11.9 8.9ZM14.4 6.8L15.9 6.8L16.4 21L14.8 21Z","designated-aisle":"M3 5L6 5L6 14L3 14ZM3 12L13 12L13 15L3 15ZM5 15L7 15L7 20L5 20ZM11 15L13 15L13 20L11 20ZM13 7L20 7L17 4L19 4L23 8.5L19 13L17 13L20 10L13 10Z","step-free":"M4 4.5a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM4.4 7L7.5 7L7.5 13L11 15L9.5 17L5 14L4.4 7ZM2 19L8 19L17 10L22 10L22 13L18 13L10 21L2 21Z",hearing:"M15.5 3.5C9 2.2 5.5 6 5.5 11.5C5.5 16 8 19.5 10.5 21C13.2 22.6 16.4 20.8 15.4 18C14.8 16.4 12.9 16.1 13 14C13.1 11.9 15.8 11.4 15.8 8.5C15.8 5.4 13 4 15.5 3.5Z",cart:"M5.5 6L18.5 6a2.5 2.5 0 0 1 2.5 2.5L21 15.5a2.5 2.5 0 0 1 -2.5 2.5L11 18L7 20.5L7.5 18L5.5 18a2.5 2.5 0 0 1 -2.5 -2.5L3 8.5a2.5 2.5 0 0 1 2.5 -2.5zM6.5 11L17.5 11L17.5 12.6L6.5 12.6zM6.5 14L17.5 14L17.5 15.6L6.5 15.6z","sign-language":"M7 11L17 11L17 18a2 2 0 0 1 -2 2L9 20a2 2 0 0 1 -2 -2zM7.6 5L9.4 5L9.4 12L7.6 12zM9.9 3.5L11.7 3.5L11.7 12L9.9 12zM12.3 3.5L14.1 3.5L14.1 12L12.3 12zM14.6 5L16.4 5L16.4 12L14.6 12zM7.2 12.5L5 10.2L6.4 8.9L8.6 11.2Z","low-vision":"M2.5 12C6 6 18 6 21.5 12C18 18 6 18 2.5 12ZM9 12a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM17.5 3L19 3L19 6L17.5 6ZM19 4L22 4L22 5.5L19 5.5Z","sensory-friendly":"M4 11C4 5 7 2.5 12 2.5S20 5 20 11L17 11C17 7 15.5 5.5 12 5.5S7 7 7 11ZM3 10L8 10L8 19L5 19a2 2 0 0 1 -2 -2ZM16 10L21 10L21 17a2 2 0 0 1 -2 2L16 19ZM9 12L15 12L15 14L9 14ZM10 16L14 16L14 18L10 18Z","plus-size":"M9.4 4.3a2.6 2.6 0 1 0 5.2 0a2.6 2.6 0 1 0 -5.2 0zM5 20L4 13C4 10.5 7 9.5 12 9.5C17 9.5 20 10.5 20 13L19 20Z","lift-armrest":"M5 6L8 6L8 19L5 19zM5 16L18 16L18 19L5 19zM8 12L17 12L17 14.5L8 14.5zM14 7L16 7L16 12L14 12zM12 7L18 7L15 3Z"},yc=pr.wheelchair;function Ki(t){if(!t?.length)return null;let e=t.includes("wheelchair")?"wheelchair":t[0];return pr[e]??null}function Ht(t){return/-(\d{1,5})$/.exec(t)?.[1]??t}var K=cr;function fr(t,e,i){let n=Z(t),r=Z(e);if(!n||!r)return e;let o=Math.max(0,Math.min(1,i));return`#${n.map((a,l)=>Math.round(a*o+r[l]*(1-o))).map(a=>a.toString(16).padStart(2,"0")).join("")}`}var Vt=3;function J(t,e,i=fa){let n=K(e,t);if(n!=null&&n>=i)return e;let r=K(Nt,t)??0,o=K(Gt,t)??0;return r===0&&o===0?e:r>=o?Nt:Gt}var ma=3;function Ui(t){let e=K("#ffffff",t);if(e!=null&&e>=ma)return"#ffffff";let i=K(Nt,t)??0,n=K(Gt,t)??0;return i===0&&n===0?"#ffffff":i>=n?Nt:Gt}var gr=3,We=4.5,jt=3,mr=24,ba=20;function Xi(t){return t.filter(e=>e.visible&&!!e.screenBox)}function Ke(t,e){return t.x<e.x+e.width&&t.x+t.width>e.x&&t.y<e.y+e.height&&t.y+t.height>e.y}function Se(t){return t.length?Math.round(Math.min(...t)*100)/100:null}function A(t,e,i){return i.length?{code:t,message:e,count:i.length,samples:i.slice(0,ba)}:null}function Wt(t,e,i){return{primaryId:t.seatId,primaryLabel:t.label,...e==null?{}:{measured:Math.round(e*100)/100},...i==null?{}:{minimum:i}}}function Yi(t,e,i){return{primaryId:t.id,primaryLabel:t.label,...e==null?{}:{measured:Math.round(e*100)/100},...i==null?{}:{minimum:i}}}function br(t,e,i){return{primaryId:t.objectId,primaryLabel:t.text,...e==null?{}:{measured:Math.round(e*100)/100},...i==null?{}:{minimum:i}}}function Ue(t,e,i,n){return{primaryId:t,primaryLabel:e,secondaryId:i,secondaryLabel:n}}function ga(t,e="overview",i=null){let n=Xi(t.labels),r=Xi(t.hierarchyLabels),o=Xi(t.freeTextLabels),s=t.gaAreas.filter(S=>S.visible),a=n.map(S=>K(S.ink,S.fill)??0),l=r.map(S=>K(S.ink,S.fill)??0),c=o.map(S=>K(S.ink,S.background)??0),d=s.map(S=>K(S.effectiveBackground,t.canvasBackground)??0),h=i?t.labels.filter(S=>S.categoryKey===i):t.labels,u=i?t.gaAreas.filter(S=>S.categoryKey===i):t.gaAreas,m=h.filter(S=>S.selected),b=h.filter(S=>S.status==="held"),f=h.filter(S=>S.status==="booked"),p=h.filter(S=>S.pointerTarget.active),g=new Set([...t.labels.filter(S=>S.visible&&(S.opacity>.25||S.selected||S.status!=="free")).map(S=>S.categoryKey),...t.gaAreas.filter(S=>S.visible&&S.opacity>.1).map(S=>S.categoryKey)]),v=m.length?Se(m.flatMap(S=>[K(t.selectionRingColor,t.canvasBackground)??0,K(t.selectionRingColor,S.fill)??0])):null,y=[],x=(S,T)=>Array.from({length:S},(E,O)=>({primaryId:`overview:${O+1}`,primaryLabel:T}));if(e==="overview"&&t.rung==="sections"&&(y.push(A("overview-section-category-paint","Section overview shells must use the neutral hierarchy palette, not category paint",x(t.overviewStyle.categoryPaintedSectionShells,"category-painted section shell"))),y.push(A("overview-category-detail-visible","Category-tinted section detail must wait until section focus or seat zoom",x(t.overviewStyle.visibleCategoryDetailOutlines,"category detail outline"))),y.push(A("overview-row-hints-visible","Row and seat patterns must not clutter the section overview",x(t.overviewStyle.visibleSectionRowHints,"section row hint"))),y.push(A("overview-availability-clutter","Live availability counts belong in focused detail, not on section overview shells",x(t.overviewStyle.visibleSectionAvailabilityLabels,"section availability label"))),y.push(A("overview-ga-detail-visible","Section-contained standing paint belongs in focused detail, not on section overview shells",x(t.overviewStyle.visibleSectionGADetails,"section-contained GA detail")))),y.push(A("bookable-label-undersized","Visible bookable labels must meet the rendered small-text size floor",n.filter(S=>S.renderedFontPx<t.minimumVisibleLabelPx).map(S=>Wt(S,S.renderedFontPx,t.minimumVisibleLabelPx)))),e==="interaction"){let S=h.length>0,T=u.length>0,E=S||T,O=u.filter(P=>P.visible),F=new Set([...h.flatMap(P=>P.sectionId?[P.sectionId]:[]),...u.flatMap(P=>P.sectionId?[P.sectionId]:[])]),j=new Set([...t.labels.map(P=>P.categoryKey),...t.gaAreas.map(P=>P.categoryKey)]),_=P=>P.screenCenter.x>=0&&P.screenCenter.x<=t.viewport.width&&P.screenCenter.y>=0&&P.screenCenter.y<=t.viewport.height;y.push(A("detail-rung-missing","Interaction evidence with bookable inventory must render the seat-detail rung",E&&t.rung!=="seats"?[{primaryId:"renderer",primaryLabel:t.rung}]:[])),y.push(A("detail-inventory-not-visible","Interaction evidence must frame at least one real bookable unit",E&&!h.some(_)&&!O.length?[{primaryId:"renderer",primaryLabel:"no target inventory in viewport"}]:[])),y.push(A("pointer-target-inactive","Interaction evidence must expose a live production pointer target",S&&!p.some(_)||!S&&T&&!O.some(P=>P.interactive)?[{primaryId:"renderer",primaryLabel:"no active pointer target in viewport"}]:[])),y.push(A("pointer-target-undersized","Every active production pointer target must reach at least 24 CSS pixels",p.filter(P=>_(P)&&P.pointerTarget.effectiveMinimumPx<mr).map(P=>Wt(P,P.pointerTarget.effectiveMinimumPx,mr)))),y.push(A("selected-state-missing","Interaction evidence must paint a selected unit and its renderer-owned ring",S&&(!m.length||!m.some(P=>t.selectionRingSeatIds.includes(P.seatId)))?[{primaryId:"renderer",primaryLabel:"selected state"}]:[])),y.push(A("selected-state-contrast-low","The selected-state ring must maintain 3:1 graphical contrast with the canvas",m.length&&(v??0)<jt?[{primaryId:m[0].seatId,primaryLabel:m[0].label,measured:Math.round((v??0)*100)/100,minimum:jt}]:[])),y.push(A("held-state-missing","Interaction evidence must paint a held state when the floor has at least two status-managed units",h.length>=2&&!b.length?[{primaryId:"renderer",primaryLabel:"held state"}]:[])),y.push(A("booked-state-missing","Interaction evidence must paint a taken state when the floor has at least three status-managed units",h.length>=3&&!f.length?[{primaryId:"renderer",primaryLabel:"booked state"}]:[]));let G=new Set(b.map(P=>`${P.fill.toLowerCase()}:${P.opacity}`)),X=new Set(f.map(P=>`${P.fill.toLowerCase()}:${P.opacity}`));y.push(A("status-state-indistinct","Held and taken evidence must resolve to distinct renderer paint",b.length&&f.length&&[...G].some(P=>X.has(P))?[{primaryId:b[0].seatId,primaryLabel:b[0].label,secondaryId:f[0].seatId,secondaryLabel:f[0].label}]:[])),y.push(A("section-focus-missing","Interaction evidence must exercise section focus and its backdrop when section membership exists",F.size&&(!t.focusedSectionId||!t.focusBackdropVisible)?[{primaryId:"renderer",primaryLabel:"section focus"}]:[])),y.push(A("category-filter-missing","Interaction evidence must exercise a category filter when multiple categories exist",j.size>=2&&(!t.categoryFilterKeys||!t.categoryFilterKeys.length)?[{primaryId:"renderer",primaryLabel:"category filter"}]:[]));let D=t.labels.filter(P=>P.status==="free"&&!P.selected&&t.categoryFilterKeys!=null&&!t.categoryFilterKeys.includes(P.categoryKey)),z=t.gaAreas.filter(P=>t.categoryFilterKeys!=null&&!t.categoryFilterKeys.includes(P.categoryKey));y.push(A("category-filter-ineffective","The active category filter must visibly dim excluded free inventory",(D.length||z.length)&&!D.some(P=>P.opacity<=.25)&&!z.some(P=>P.opacity<=.1)?[...D.map(P=>Wt(P,P.opacity)),...z.map(P=>({primaryId:P.areaId,primaryLabel:P.label,measured:P.opacity}))]:[])),y.push(A("target-category-not-visible","A category-specific interaction scene must visibly paint its exact target category",i&&!g.has(i)?[{primaryId:i,primaryLabel:i}]:[])),y.push(A("target-category-filter-mismatch","A category-specific interaction scene must bind its filter to only the exact target category",i&&(t.categoryFilterKeys?.length!==1||t.categoryFilterKeys[0]!==i)?[{primaryId:i,primaryLabel:i}]:[]))}y.push(A("bookable-label-contrast-low","Visible bookable labels must meet 4.5:1 contrast against their actual paint",n.flatMap(S=>{let T=K(S.ink,S.fill)??0;return T<We?[Wt(S,T,We)]:[]})));let I=[];for(let S=0;S<n.length;S+=1)for(let T=0;T<S;T+=1)Ke(n[S].screenBox,n[T].screenBox)&&I.push(Ue(n[T].seatId,n[T].label,n[S].seatId,n[S].label));y.push(A("bookable-label-collision","Visible bookable labels must not overlap",I)),y.push(A("hierarchy-label-undersized","Visible section and zone labels must meet the rendered small-text size floor",r.filter(S=>S.renderedFontPx<Q).map(S=>Yi(S,S.renderedFontPx,Q)))),y.push(A("hierarchy-label-contrast-low","Visible section and zone labels must meet 4.5:1 contrast against their backing paint",r.flatMap(S=>{let T=K(S.ink,S.fill)??0;return T<We?[Yi(S,T,We)]:[]}))),y.push(A("hierarchy-label-outside-section","Visible section labels must remain inside the filled section surface and outside holes",r.filter(S=>S.kind==="section"&&S.fitsContainer===!1).map(S=>Yi(S))));let k=[];for(let S=0;S<r.length;S+=1)for(let T=0;T<S;T+=1)Ke(r[S].screenBox,r[T].screenBox)&&k.push(Ue(r[T].id,r[T].label,r[S].id,r[S].label));y.push(A("hierarchy-label-collision","Visible hierarchy labels must not overlap each other",k));let w=[];for(let S of r)for(let T of n)Ke(S.screenBox,T.screenBox)&&w.push(Ue(S.id,S.label,T.seatId,T.label));y.push(A("hierarchy-bookable-collision","Visible hierarchy labels must not overlap bookable labels",w)),y.push(A("free-text-undersized","Visible chart text must meet the rendered small-text size floor",o.filter(S=>S.renderedFontPx<t.minimumVisibleLabelPx).map(S=>br(S,S.renderedFontPx,t.minimumVisibleLabelPx)))),y.push(A("free-text-contrast-low","Visible chart text must meet 4.5:1 contrast against its measured background",o.flatMap(S=>{let T=K(S.ink,S.background)??0;return T<We?[br(S,T,We)]:[]})));let M=[];for(let S=0;S<o.length;S+=1)for(let T=0;T<S;T+=1)Ke(o[S].screenBox,o[T].screenBox)&&M.push(Ue(o[T].objectId,o[T].text,o[S].objectId,o[S].text));y.push(A("free-text-collision","Visible chart text labels must not overlap each other",M));let C=[];for(let S of o)for(let T of n)Ke(S.screenBox,T.screenBox)&&C.push(Ue(S.objectId,S.text,T.seatId,T.label));y.push(A("free-text-bookable-collision","Visible chart text must not overlap bookable labels",C));let L=[];for(let S of o)for(let T of r)Ke(S.screenBox,T.screenBox)&&L.push(Ue(S.objectId,S.text,T.id,T.label));y.push(A("free-text-hierarchy-collision","Visible chart text must not overlap hierarchy labels",L)),y.push(A("ga-contrast-low","Visible GA surfaces must maintain 3:1 graphical contrast with the canvas",s.flatMap(S=>{let T=K(S.effectiveBackground,t.canvasBackground)??0;return T<jt?[{primaryId:S.areaId,primaryLabel:S.label,measured:Math.round(T*100)/100,minimum:jt}]:[]})));let R=y.filter(S=>!!S);return{version:gr,passed:R.length===0,state:e,targetCategoryKey:i,resolvedRules:["rendered-overview-label-size","rendered-overview-label-contrast","rendered-overview-label-collision","rendered-overview-hierarchy-containment","rendered-overview-section-first-style","rendered-overview-ga-contrast",...e==="interaction"?["rendered-detail-inventory","rendered-pointer-target","rendered-selected-held-taken-states","rendered-section-focus","rendered-category-filter"]:[]],viewport:t.viewport,canvasBackground:t.canvasBackground,effectiveScale:t.effectiveScale,rung:t.rung,inventory:{totalBookableUnits:t.totalBookableUnits,totalLabelledBookableUnits:t.totalLabelledBookableUnits,visibleBookableLabels:n.length,hiddenBookableLabels:t.hiddenLabels,visibleHierarchyLabels:r.length,visibleFreeTextLabels:o.length,visibleGAAreas:s.length},overviewStyle:t.overviewStyle,composition:{hierarchy:t.hierarchyLabels.filter(S=>S.role==="name").map(S=>({id:S.id,kind:S.kind,label:S.label,visible:S.visible})).sort((S,T)=>S.kind.localeCompare(T.kind)||S.id.localeCompare(T.id)),labelledObjects:t.freeTextLabels.map(S=>({objectId:S.objectId,kind:S.kind,text:S.text,visible:S.visible})).sort((S,T)=>S.objectId.localeCompare(T.objectId)||S.kind.localeCompare(T.kind)),gaAreas:t.gaAreas.map(S=>({areaId:S.areaId,label:S.label,categoryKey:S.categoryKey,...S.sectionId?{sectionId:S.sectionId}:{},visible:S.visible})).sort((S,T)=>S.areaId.localeCompare(T.areaId)),bookableSectionIds:[...new Set(t.labels.flatMap(S=>S.sectionId?[S.sectionId]:[]))].sort(),categoryKeys:[...new Set([...t.labels.map(S=>S.categoryKey),...t.gaAreas.map(S=>S.categoryKey)])].sort(),activeCategoryKeys:[...g].sort()},metrics:{minimumRenderedBookableLabelPx:Se(n.map(S=>S.renderedFontPx)),minimumBookableLabelContrast:Se(a),minimumRenderedHierarchyLabelPx:Se(r.map(S=>S.renderedFontPx)),minimumHierarchyLabelContrast:Se(l),minimumRenderedFreeTextPx:Se(o.map(S=>S.renderedFontPx)),minimumFreeTextContrast:Se(c),minimumGAContrast:Se(d),minimumEffectivePointerTargetPx:Se(p.map(S=>S.pointerTarget.effectiveMinimumPx)),selectedRingContrast:v==null?null:Math.round(v*100)/100},interaction:{applicable:{detail:h.length>0||u.length>0,pointer:h.length>0||u.length>0,held:h.length>=2,booked:h.length>=3,sectionFocus:h.some(S=>!!S.sectionId)||u.some(S=>!!S.sectionId),categoryFilter:new Set([...t.labels.map(S=>S.categoryKey),...t.gaAreas.map(S=>S.categoryKey)]).size>=2},selectedUnits:m.length,heldUnits:b.length,bookedUnits:f.length,activePointerTargets:p.length,focusedSectionId:t.focusedSectionId,focusBackdropVisible:t.focusBackdropVisible,categoryFilterKeys:t.categoryFilterKeys},findings:R}}var Tt=require("konva/lib/Core"),Vo=require("konva/lib/Stage"),ci=require("konva/lib/Layer"),Le=require("konva/lib/Group"),ve=require("konva/lib/shapes/Circle"),Ee=require("konva/lib/shapes/Rect"),et=require("konva/lib/shapes/Line"),Ce=require("konva/lib/shapes/Text"),jo=require("konva/lib/shapes/Path"),Wo=require("konva/lib/shapes/Image"),Ko=require("konva/lib/Shape");function ya(t){let e=0;for(let i=0,n=t.length;i<n;i+=1){let r=t[i],o=t[(i+1)%n];e+=r.x*o.y-o.x*r.y}return e/2}function ht(t){return ya(t)*2}function Xe(t){let e=t.backgroundImage;return e?.url&&!e.assetId?e:void 0}var Sa=9;function va(t){if(t.kind==="circle")return{hx:t.r,hy:t.r};let e=t.width/2,i=t.height/2,n=t.rotation??0;if(!n)return{hx:e,hy:i};let r=n*Math.PI/180,o=Math.abs(Math.cos(r)),s=Math.abs(Math.sin(r));return{hx:e*o+i*s,hy:e*s+i*o}}function ka(t,e,i,n,r){if(t.shape.kind==="circle"){let b=Math.min(Math.max(t.seat.x,e),n),f=Math.min(Math.max(t.seat.y,i),r),p=t.seat.x-b,g=t.seat.y-f;return p*p+g*g<=t.shape.r*t.shape.r}let o=t.shape.rotation??0;if(!o)return t.seat.x-t.hx<=n&&t.seat.x+t.hx>=e&&t.seat.y-t.hy<=r&&t.seat.y+t.hy>=i;let s=o*Math.PI/180,a=Math.cos(s),l=Math.sin(s),c=t.shape.width/2,d=t.shape.height/2,h=[[-c,-d],[c,-d],[c,d],[-c,d]].map(([b,f])=>[t.seat.x+b*a-f*l,t.seat.y+b*l+f*a]),u=[[e,i],[n,i],[n,r],[e,r]],m=[[1,0],[0,1],[a,l],[-l,a]];for(let[b,f]of m){let p=1/0,g=-1/0;for(let[x,I]of h){let k=x*b+I*f;k<p&&(p=k),k>g&&(g=k)}let v=1/0,y=-1/0;for(let[x,I]of u){let k=x*b+I*f;k<v&&(v=k),k>y&&(y=k)}if(g<v||y<p)return!1}return!0}function yr(t,e={}){let i=e.seatRadius??Sa,n=t.length,r=new Array(n),o=1/0,s=1/0,a=-1/0,l=-1/0,c=0;for(let k=0;k<n;k++){let w=t[k],M=e.shapeOf?.(w)??{kind:"circle",r:i},{hx:C,hy:L}=va(M);r[k]={seat:w,shape:M,hx:C,hy:L},w.x-C<o&&(o=w.x-C),w.y-L<s&&(s=w.y-L),w.x+C>a&&(a=w.x+C),w.y+L>l&&(l=w.y+L),C>c&&(c=C),L>c&&(c=L)}n===0&&(o=0,s=0,a=0,l=0);let d=c>0?c*4:1,h=Math.max(a-o,0),u=Math.max(l-s,0),m=Math.max(64,e.maxCells??n*4),b=d,f=Math.max(1,Math.ceil(h/b)||1),p=Math.max(1,Math.ceil(u/b)||1);for(;f*p>m&&(f>1||p>1);)b*=2,f=Math.max(1,Math.ceil(h/b)||1),p=Math.max(1,Math.ceil(u/b)||1);let g=f*p,v=new Int32Array(g+1),y=0;for(let k=0;k<n;k++){let w=r[k],M=me(Math.floor((w.seat.x-w.hx-o)/b),0,f-1),C=me(Math.floor((w.seat.x+w.hx-o)/b),0,f-1),L=me(Math.floor((w.seat.y-w.hy-s)/b),0,p-1),R=me(Math.floor((w.seat.y+w.hy-s)/b),0,p-1);for(let S=L;S<=R;S++)for(let T=M;T<=C;T++)v[S*f+T+1]++,y++}for(let k=0;k<g;k++)v[k+1]+=v[k];let x=new Int32Array(y),I=v.slice(0,g);for(let k=0;k<n;k++){let w=r[k],M=me(Math.floor((w.seat.x-w.hx-o)/b),0,f-1),C=me(Math.floor((w.seat.x+w.hx-o)/b),0,f-1),L=me(Math.floor((w.seat.y-w.hy-s)/b),0,p-1),R=me(Math.floor((w.seat.y+w.hy-s)/b),0,p-1);for(let S=L;S<=R;S++)for(let T=M;T<=C;T++){let E=S*f+T;x[I[E]++]=k}}return{seats:t,entries:r,minX:o,minY:s,cell:b,cols:f,rows:p,cellStart:v,items:x,stamp:new Int32Array(n),epoch:0}}function Kt(t,e,i={}){let n=Math.min(e.x,e.x+e.width),r=Math.max(e.x,e.x+e.width),o=Math.min(e.y,e.y+e.height),s=Math.max(e.y,e.y+e.height),a=i.mode??"center",{cols:l,rows:c,cell:d,minX:h,minY:u,cellStart:m,items:b,entries:f}=t,p=Math.max(0,Math.floor((n-h)/d)),g=Math.min(l-1,Math.floor((r-h)/d)),v=Math.max(0,Math.floor((o-u)/d)),y=Math.min(c-1,Math.floor((s-u)/d));if(p>g||v>y)return[];let x=[],I=t.stamp,k=++t.epoch;for(let w=v;w<=y;w++){let M=w*l;for(let C=p;C<=g;C++){let L=M+C,R=m[L+1];for(let S=m[L];S<R;S++){let T=b[S];if(I[T]===k)continue;I[T]=k;let E=f[T];if(i.filter&&!i.filter(E.seat.id,E.seat))continue;(a==="center"?E.seat.x>=n&&E.seat.x<=r&&E.seat.y>=o&&E.seat.y<=s:ka(E,n,o,r,s))&&x.push(T)}}}return x.sort((w,M)=>w-M),x.map(w=>f[w].seat.id)}function Sr(t,e=0){let i=Math.max(1,t.width,t.height),n={x:t.x+t.width/2,y:t.y+t.height/2},r=i*1.55,o=Math.max(i*.82,Math.max(0,e)+i*.45);return{target:n,distance:r,height:o,focalLength:Math.hypot(r,o),yawRad:-8*Math.PI/180}}function ie(t,e,i=0){let n=e.x-t.target.x,r=e.y-t.target.y,o=Math.cos(t.yawRad),s=Math.sin(t.yawRad),a=n*o-r*s,c=n*s+r*o-t.distance,d=i-t.height,h=Math.hypot(t.distance,t.height),u=(-t.distance*c-t.height*d)/h,m=(-t.height*c+t.distance*d)/h,b=Math.max(h*.08,u),f=t.focalLength/b;return{x:t.target.x+a*f,y:t.target.y-m*f,depth:b,scale:f}}function re(t,e){return{x:t.a*e.x+t.c*e.y+t.e,y:t.b*e.x+t.d*e.y+t.f}}function vr(t){let e=t.a*t.d-t.b*t.c;if(!Number.isFinite(e)||Math.abs(e)<1e-9)throw new Error("perspective projection produced a singular affine");let i=t.d/e,n=-t.b/e,r=-t.c/e,o=t.a/e;return{a:i,b:n,c:r,d:o,e:-(i*t.e+r*t.f),f:-(n*t.e+o*t.f)}}function kr(t,e){return{a:t.a*e.a+t.c*e.b,b:t.b*e.a+t.d*e.b,c:t.a*e.c+t.c*e.d,d:t.b*e.c+t.d*e.d,e:t.a*e.e+t.c*e.f+t.e,f:t.b*e.e+t.d*e.f+t.f}}function Ut(t,e,i=()=>0){let n=ie(t,e,i(e)),r={x:e.x+1,y:e.y},o={x:e.x,y:e.y+1},s=ie(t,r,i(r)),a=ie(t,o,i(o)),l=s.x-n.x,c=s.y-n.y,d=a.x-n.x,h=a.y-n.y;return{a:l,b:c,c:d,d:h,e:n.x-l*e.x-d*e.y,f:n.y-c*e.x-h*e.y}}function xr(t){let e=Math.hypot(t.a,t.b),i=t.a*t.d-t.b*t.c;return{rotationDeg:Math.atan2(t.b,t.a)*180/Math.PI,scaleX:e,scaleY:i/Math.max(e,1e-9),skewX:(t.a*t.c+t.b*t.d)/Math.max(i,1e-9)}}var Ir;function Tr(t){Ir=t}function xa(t){return typeof t=="number"?t:t instanceof Date?t.getTime():Date.parse(t)}var wr=new Map;function wa(t,e){let i=t??Ir,n=`${i??""}|${JSON.stringify(e)}`,r=wr.get(n);return r||(r=new Intl.DateTimeFormat(i,e),wr.set(n,r)),r}var Ia={dateStyle:"medium",timeStyle:"short"};function Lr(t,e={}){let{locale:i,...n}=e,r=xa(t);if(!Number.isFinite(r))return"";let o=Object.keys(n).length?n:Ia;return wa(i,o).format(r)}var Mc="USD",Ta=["USD","EUR","GBP","CAD","AUD","INR","AED","SGD","JPY","CHF","SEK","NZD","ZAR","MXN","BRL"],Mr;function qi(t){Mr=t}var Cr=new Map;function Xt(t,e,i,n){let r=n??Mr,o=`${r??""}|${t}|${e??"auto"}|${i??"auto"}`,s=Cr.get(o);return s||(s=new Intl.NumberFormat(r,{style:"currency",currency:t,minimumFractionDigits:e,maximumFractionDigits:i}),Cr.set(o,s)),s}function Yt(t,e="USD",i,n){if(typeof i=="object"){let o=i;try{return Xt(e,o.minimumFractionDigits,o.maximumFractionDigits,o.locale).format(t)}catch(s){if(o.fallback)return o.fallback(t,e);throw s}}let r=i??(Number.isInteger(t)?0:void 0);return Xt(e,r,r,n).format(t)}function Pr(t="USD"){try{return Xt(t,void 0,void 0).resolvedOptions().maximumFractionDigits??2}catch{return 2}}function Rr(t,e="USD"){return t/10**Pr(e)}function La(t,e="USD",i){return Yt(Rr(t,e),e,void 0,i)}function Ca(t="USD"){return Xt(t,0,0).formatToParts(0).find(i=>i.type==="currency")?.value??t}var pt={"common.cancel":"Cancel","common.close":"Close","common.done":"Done","common.copied":"\u2713 Copied","picker.holdExpired":"Your hold expired \u2014 the seats were released. Pick again.","picker.poweredBy":"Powered by SeatLayer","picker.testMode":"TEST MODE","picker.orphanHint":"This leaves a single seat stranded \u2014 consider shifting one seat over.","picker.companionRequiresWheelchair":"Requires the adjacent wheelchair place","picker.companionPairRequired":"Select the adjacent wheelchair place with each companion ticket.","map.aria":"Seating map. Use arrow keys to move between seats, Enter to select.","map.seatsLeft":"{count} LEFT","map.soldOut":"SOLD OUT","map.fromPrice":"FROM {price}","map.statusHeld":"On hold","map.statusTaken":"Taken","picker.floor":"Floor","picker.zoomLevel":"Zoom level","picker.rungTip.zones":"Venue overview \u2014 groups of sections such as North Stand or VIP","picker.rungTip.sections":"Section blocks \u2014 sold-out and nearly-gone sections shade to show availability at a glance","picker.rungTip.seats":"Individual seats \u2014 blocks melt into dots","picker.rungLabel.zones":"ZONES","picker.rungLabel.sections":"SECTIONS","picker.rungLabel.seats":"SEATS","picker.sectionSummaryAria":"{label} section summary","picker.closeSectionSummary":"Close section summary","picker.seatsLeftInSection.one":"{count} seat left","picker.seatsLeftInSection.other":"{count} seats left","picker.overview":"Overview","picker.entrance":"Entrance","picker.tapSeatHint":"Tap any seat to check its view","picker.ticketTierFor":"Ticket tier for {label}","picker.viewFromSeat":"View from seat {label}","picker.real360":"REAL 360\xB0","picker.preview":"PREVIEW","picker.sightline":"\u2248 {m} m to stage","picker.panorama360":"360\xB0 venue photo","picker.illustrationCaption":"illustration \xB7 \u2248 {m} m from stage","picker.restrictedView":"Restricted view","picker.obstructedView":"Obstructed view","picker.premiumSeat":"Premium seat","picker.hideLimitedView":"Hide limited-view seats","picker.bestSeatsPremium":"Best seats","picker.premiumFallbackNote":"No premium block of {count} \u2014 showing best overall","picker.loading3d":"Building the 3D venue\u2026","picker.unavailable3d":"3D could not start. The seat map is still available.","picker.jumpToSection":"Jump to section","picker.salesClosedPill":"Sales are closed","picker.salesClosedCopy":"Ticket sales for this event have ended.","picker.salesClosedCta":"Sales closed","picker.salesClosedToast":"Sales are closed for this event.","picker.holdReassurance":"Yours for {time} \u2014 you won\u2019t be charged yet.","picker.securingSeats":"Securing your seats\u2026","picker.openingCheckout":"Opening secure checkout\u2026","picker.peekSecured":"\u2713 {count} secured \xB7 {total} \u2014 you won\u2019t be charged yet","picker.priceHint":"Colours on the map are ticket types \u2014 tap one below to show just those seats.","picker.findTogetherInstead":"Find seats together instead","picker.keepMyPicks":"Keep my picks","picker.accessExpiredBody":"Sign in again, or reload the page, to keep browsing these seats. Anything you are already holding stays yours.","picker.accessExpiredTitle":"Your access session has ended","picker.accessInvalidBody":"You can still book anything shown as available. Contact whoever sent you here for access to the rest.","picker.accessInvalidTitle":"We couldn\u2019t verify your access","picker.accessPausedBody":"The organizer has paused this selection. Try again in a few minutes.","picker.accessPausedTitle":"These seats are on hold right now","picker.accessRetry":"Try again","picker.accessRevokedBody":"Ask whoever sent you here for a new link to keep booking these seats.","picker.accessRevokedTitle":"This access link is no longer active","picker.accessiblePhysicalSeat":"Accessible physical seat","picker.addTime":"Add time","picker.addingEllipsis":"Adding\u2026","picker.allLevels":"All levels","picker.allPlacesBookedTogether":"All {count} places are booked together as one exclusive table.","picker.allPrices":"All prices","picker.allSeats":"All seats","picker.allSetTitle":"You\u2019re all set","picker.anyTicketType":"Any ticket type","picker.anyVenueZone":"Any venue zone","picker.areas":"Areas","picker.available":"Available","picker.backToMap":"Back to map","picker.backToVenue":"Back to venue","picker.bestSeatsStar":"\u2726 Best seats","picker.booth":"Booth","picker.capacityGuests":"{count} guests","picker.change":"Change","picker.chartDerivedModel":"Chart-derived model","picker.chartDerivedSeatEye":"Live 3D \xB7 chart-derived seat-eye \xB7 not surveyed","picker.checkConnection":"Check your connection and try again.","picker.checkoutCouldNotBeOpened":"Checkout could not be opened. Your seats are still held \u2014 please try again.","picker.chooseAnotherToCompare":"Choose another seat to compare.","picker.chooseGuestsCopy":"Choose how many guests will sit together. This table is held exclusively for your party.","picker.chooseMinMaxGuests":"Choose {min}\u2013{max} guests","picker.clearSavedSeatComparison":"Clear saved seat comparison","picker.close":"Close","picker.closeSeatStatus":"Close seat status","picker.closestGroupChosenInstantly":"Closest available group, chosen instantly.","picker.collapseTicketPanel":"Collapse ticket panel","picker.compareCount":"Compare {count}","picker.compareWithSaved":"Compare with saved","picker.confirmOrCancelSeat":"Confirm or cancel this seat","picker.confirmSeatLabel":"Confirm seat {label}","picker.confirmYourTable":"Confirm your table","picker.confirmedAndOnWay":"confirmed. A confirmation is on its way.","picker.continue":"Continue","picker.continueToCheckout":"Continue to checkout","picker.couldNotAddMoreTime":"Couldn\u2019t add more time \u2014 please head to checkout now.","picker.couldNotFindSeatsTogether":"We couldn\u2019t find {count} seats together. Try fewer seats or another ticket type.","picker.couldNotReleaseTickets":"Couldn\u2019t release your tickets. Your hold is unchanged.","picker.couldNotRemoveLabel":"Couldn\u2019t remove {label}. Your hold is unchanged.","picker.currentOffer":"Current offer","picker.currentTicketOffer":"Current ticket offer","picker.dragToLookAround":"Drag to look around \xB7 scroll to zoom","picker.emptyWheelchairSpace":"Empty wheelchair space","picker.exitFullScreen":"Exit full screen","picker.fewer":"Fewer","picker.fewerGuests":"Fewer guests","picker.fewerSeats":"Fewer seats","picker.filterAndFocusByPrice":"Filter and focus seats by price","picker.filters":"Filters","picker.findBestSeatsCount.one":"Find {count} best seat","picker.findBestSeatsCount.other":"Find {count} best seats","picker.findBestSeatsTogether":"Find the best seats together","picker.findNewSeats":"Find new seats","picker.findingBestSeats":"Finding the best seats\u2026","picker.findingEllipsis":"Finding\u2026","picker.fitToScreen":"Fit to screen","picker.flat2dMap":"Flat 2D map","picker.flexiblePartyTypeWord":"Flexible party \xB7 {typeWord}","picker.fullScreen":"Full screen","picker.generalAdmission":"General admission","picker.guestCountCouldNotBeSecured":"That guest count could not be secured. Your current table hold is unchanged.","picker.guestCountNoLongerAvailable":"That guest count is no longer available. Your current hold is unchanged.","picker.guests":"Guests","picker.guestsCount":"{count} guests","picker.guestsCountEdit":"{count} guests \xB7 Edit","picker.held":"Held","picker.heldForYou":"Held for you","picker.heldSeatExplanation":"Another buyer is holding this seat. It may become available again.","picker.heldTicketsReleased":"Held tickets released. Choose your new seats.","picker.heldTicketsRestored":"Your held tickets have been restored.","picker.hidePanel":"Hide panel","picker.hideTicketPanel":"Hide the ticket panel","picker.holdSeatsAndCheckout":"Hold seats & checkout","picker.howOfferWorks":"How the {name} offer works","picker.interactive3dVenueView":"Interactive 3D venue view","picker.keepMine":"Keep mine","picker.labelNoLongerAvailable":"{label} is no longer available.","picker.labelRemoved":"{label} removed.","picker.labelRemovedFromHold":"{label} removed from your hold.","picker.labelRestored":"{label} restored.","picker.labelsNoLongerAvailable.one":"{labels} is no longer available. Choose another seat.","picker.labelsNoLongerAvailable.other":"{labels} are no longer available. Choose another group.","picker.leftCount.one":"{count} left","picker.leftCount.other":"{count} left","picker.levelNumber":"Level {number}","picker.levels":"Levels","picker.liveAvailability":"Live availability \u2014 seats update in real time","picker.loadingSeatMap":"Loading seat map\u2026","picker.lookAroundLive3d":"Look around in live 3D","picker.manualTicketsRemovedNote":"Your manually selected tickets will be removed only after a new group is secured.","picker.map":"Map","picker.mapDidNotLoad":"The seat map didn\u2019t load","picker.maxTicketsForOrder":"You can select up to {count} tickets for this order.","picker.selectExactMore":"Select {count} more","picker.selectExactCount":"Select exactly {count} tickets","picker.selectMinimumMore":"Select {count} more","picker.adjustSeatSelection":"Adjust seat selection","picker.selectSeatsTogether":"Choose seats together in the same row and ticket category.","picker.minToMaxGuests":"{min} to {max} guests","picker.more":"More","picker.moreGuests":"More guests","picker.moreSeats":"More seats","picker.moreSelectedCount":"{count} more selected","picker.moreTimeAdded":"More time added \u2014 your seats are still held.","picker.noAccessibilityMetadata":"No accessibility metadata supplied","picker.noAuthoredRestriction":"No organizer-authored restriction","picker.noSeatsSelected":"No seats selected","picker.notChargedYet":"You won\u2019t be charged yet.","picker.notForSale":"Not for sale","picker.notForSaleExplanation":"This seat is not included in the current sale.","picker.numberOfGuests":"Number of guests","picker.offerDetailActive":"This price applies automatically to eligible seats. Tickets in active carts temporarily reduce the available quantity; released or expired holds return it. When the offer ends, the next matching offer or normal ticket price takes over.","picker.offerDetailUpcoming":"Tickets are available at their normal price now. This scheduled offer will apply automatically to eligible seats when it starts.","picker.offerRemainingAvailable":"{count} available","picker.offerStarts":"starts {time}","picker.offerUntil":"until {time}","picker.oneSeatSaved":"1 seat saved","picker.oneSeatSavedChooseAnother":"One seat saved; choose another to compare","picker.openAuthored360":"Open venue 360\xB0","picker.openComparison":"Open comparison","picker.openComparisonOfSeats":"Open comparison of {count} seats","picker.openTicketPanel":"Open ticket panel","picker.peekFromPrice":"From {price}","picker.peekTicketsTotal.one":"{count} ticket \xB7 {total}","picker.peekTicketsTotal.other":"{count} tickets \xB7 {total}","picker.perGuestPrice":"{price} per guest","picker.pickYourSeats":"Pick your seats","picker.preferredTicketType":"Preferred ticket type","picker.preferredVenueZone":"Preferred venue zone","picker.priceNotSupplied":"Price not supplied","picker.releaseHeldTickets":"Release held tickets and choose different seats","picker.releasingEllipsis":"Releasing\u2026","picker.removeHeldTicketLabel":"Remove held ticket {label}","picker.removeSeatLabel":"Remove {label}","picker.removeTicketsUntilOrFewer":"Remove tickets until your order has {count} or fewer.","picker.replaceCurrentChoices":"Replace your current choices?","picker.review":"Review","picker.row":"Row","picker.rowLabel":"Row {label}","picker.saveToCompare":"Save to compare","picker.savedForComparison":"Saved for comparison","picker.savedSeatComparison":"Saved seat comparison","picker.scheduledOffer":"Scheduled offer","picker.seat":"Seat","picker.seatCount.one":"{count} seat","picker.seatCount.other":"{count} seats","picker.seatJustTakenByAnother":"Seat {label} was just taken by another buyer.","picker.seatLabel":"Seat {label}","picker.seatNoLongerAvailable":"That seat is no longer available.","picker.seatNoLongerYours":"Some seats are no longer available to you. They have been removed from your order.","picker.seatNumberLower":"seat {label}","picker.seatSalesClosedForEvent":"Seat sales have closed for this event.","picker.seatSelection":"Seat selection","picker.seatStatusLegend":"Seat status legend","picker.seatTaken":"Someone else took a seat you had picked. It has been removed from your order.","picker.seatsHeldForNeedMoreTime":"Your seats are held for <b>{time}</b>. Need more time?","picker.seatsJustTaken":"One or more seats were just taken. Please pick again.","picker.seatsJustTakenInCategory.one":"{count} seat just taken in {label} \xB7 {left} left","picker.seatsJustTakenInCategory.other":"{count} seats just taken in {label} \xB7 {left} left","picker.seatsNoLongerAvailableTryAnother":"Those seats are no longer available. Try another quantity or ticket type.","picker.seatsSecured":"Seats secured","picker.seatsSelectedCount.one":"{count} selected","picker.seatsSelectedCount.other":"{count} selected","picker.section":"Section","picker.secureMore":"Secure more","picker.secureMoreAndCheckout":"Secure {count} more & checkout","picker.securedCount":"{count} secured","picker.seeItIn3d":"See it in 3D","picker.select":"Select","picker.selectSeats":"Select seats","picker.selectTable":"Select table","picker.selectWholeTable":"Select whole table","picker.selected":"Selected","picker.selectingEllipsis":"Selecting\u2026","picker.showAllSeats":"Show all seats","picker.showAllTicketTypes":"Show all {count} ticket types","picker.showFewer":"Show fewer","picker.showLabelSeatsOnMap":"Show {label} seats on the map","picker.showTicketPanel":"Show the ticket panel","picker.sold":"Sold","picker.soldOutCopy":"No reserved seats are currently available for this event.","picker.soldOutEyebrow":"This event","picker.soldOutTitle":"Sold out","picker.soldSeatExplanation":"This seat has already been booked.","picker.statusAvailable":"available","picker.statusOnHold":"on hold","picker.statusTaken2":"taken","picker.table":"Table","picker.tableCapacity":"Table capacity","picker.tableUpdatedForGuests":"{label} updated for {count} guests.","picker.temporarilyHeld":"Temporarily held","picker.ticketPrices":"Ticket prices","picker.ticketTypeSoldOut":"That ticket type is sold out. Try another ticket type.","picker.tickets":"Tickets","picker.ticketsCount.one":"{count} ticket","picker.ticketsCount.other":"{count} tickets","picker.toggleColorblindColors":"Toggle colorblind-friendly colors","picker.total":"Total","picker.trayHintTapOrBest":"Tap a seat on the map, or let us pick the best available for you.","picker.trayHintTapOrStanding":"Tap a seat on the map \u2014 or grab standing tickets below.","picker.undo":"Undo","picker.upcomingTicketOffer":"Upcoming ticket offer","picker.updateTable":"Update table","picker.updatingEllipsis":"Updating\u2026","picker.venueView":"Venue view","picker.viewFromHere":"View from here","picker.viewFromThisSeat":"View from this seat","picker.wholeTypeWord":"Whole {typeWord}","picker.willChooseClosestGroup":"We\u2019ll choose the closest available group for you.","picker.willFindSeatsTogether":"We\u2019ll find {count} seats together.","picker.yourSeats":"Your seats","picker.zoomIn":"Zoom in","picker.zoomOut":"Zoom out","picker.closeVenueNav":"Close","picker.levelsAndAreas":"Levels & areas"};var Er=["en","es","de","fr"],Ye={en:pt},qt={},de="en";function $i(t,e){for(let i of[t,e,typeof navigator<"u"?navigator.language:null]){if(!i)continue;let n=i.toLowerCase().split("-")[0];if(Er.includes(n))return n}return"en"}function Ma(){return de}function ft(t,e){e&&(Ye[t]={...Ye[t],...e}),de=Ye[t]?t:"en",qi(de),Tr(de),typeof document<"u"&&(document.documentElement.lang=de)}function Pa(t){qt=t}var Ar=/\{(\w+)\}/g;function oe(t,e){let i=qt[t]??Ye[de]?.[t]??pt[t]??t;return e?i.replace(Ar,(n,r)=>String(e[r]??`{${r}}`)):i}function Ra(t,e,i){let n=new Intl.PluralRules(de).select(e);return(qt[`${t}.${n}`]??Ye[de]?.[`${t}.${n}`]??pt[`${t}.${n}`]??qt[`${t}.other`]??Ye[de]?.[`${t}.other`]??pt[`${t}.other`]??t).replace(Ar,(s,a)=>String({count:e,...i}[a]??`{${a}}`))}function Ea(t,e){return Lr(t,{...e??{dateStyle:"medium",timeStyle:"short"},locale:de})}var mt=9,Pe=.9,se=.55*Pe,ue=Q/ye,bt=4,$t=14,Br=10,Or=14,Te=.45*Pe,qe=.9*Pe,Fr=Math.max(Pe*1.1,qe),Re=8,Dr=700,ee=2,_r=Q,gt=64,$e=.55*Te,Zi=700,zr=2500,Zt=-11.5,yt=.58,Nr=320,Qt=650,Gr=1,Jt=1,Hr=20,Qi=12,Vr=[.85,.72,.62],ei=18,jr=12,Wr=.1;var Aa="#e5e7eb",Ba="#c7cbd1",Oa="#595f69",Fa="#d1d5db",Da="#b8bdc4",_a="#273142",za="#526078",Na="#f1f5f9",Ga="#374151",Ha="#64748b",Ji="#111827",Kr="#6b7280",ti="#374151",Ur="#4b5563",Xr="#4b5563",Yr=.4,St=.16,qr="rgba(244,246,248,0.06)",ii=["#E69F00","#56B4E9","#009E73","#F0E442","#0072B2","#D55E00","#CC79A7"];function he(t){return ut(t)?{sectionFill:Aa,sectionStroke:Ba,sectionInk:Oa,focalFill:Fa,focalStroke:Da}:{sectionFill:_a,sectionStroke:za,sectionInk:Na,focalFill:Ga,focalStroke:Ha}}function Ze(t,e){let i=t.sectionFill,n=dr(ge(i,.2),.85);switch(e){case"closed":return ge(i,.12);case"sold-out":return n;case"nearly-gone":return zt(i,n,.4);default:return i}}function Va(t,e){return t.x<e.x+e.width&&e.x<t.x+t.width&&t.y<e.y+e.height&&e.y<t.y+t.height}var Qe=class{constructor(){this.cells=new Map}insert(e){for(let i of this.keys(e)){let n=this.cells.get(i);n?n.push(e):this.cells.set(i,[e])}}collisionCount(e){let i=new Set,n=0;for(let r of this.keys(e))for(let o of this.cells.get(r)??[])i.has(o)||(i.add(o),Va(e,o)&&n++);return n}keys(e){let i=Math.floor(e.x/gt),n=Math.floor((e.x+Math.max(0,e.width))/gt),r=Math.floor(e.y/gt),o=Math.floor((e.y+Math.max(0,e.height))/gt),s=[];for(let a=r;a<=o;a++)for(let l=i;l<=n;l++)s.push(`${l}:${a}`);return s}};function ja(t){let e=1/0,i=1/0,n=-1/0,r=-1/0,o=!1;for(let s of t)!Number.isFinite(s.x)||!Number.isFinite(s.y)||(o=!0,s.x<e&&(e=s.x),s.y<i&&(i=s.y),s.x>n&&(n=s.x),s.y>r&&(r=s.y));return o?{minX:e,minY:i,maxX:n,maxY:r}:null}function $r(t){let e=ja(t);return e?Wa(e):null}function Wa(t){return{x:t.minX,y:t.minY,width:t.maxX-t.minX,height:t.maxY-t.minY}}function U(t){let e=$r(t);return e?{x:e.x,y:e.y,width:Math.max(1,e.width),height:Math.max(1,e.height)}:{x:0,y:0,width:1,height:1}}function ni(t,e,i,n){let r=n*Math.PI/180,o=Math.cos(r),s=Math.sin(r);return[{x:-e/2,y:-i/2},{x:e/2,y:-i/2},{x:e/2,y:i/2},{x:-e/2,y:i/2}].map(a=>({x:t.x+a.x*o-a.y*s,y:t.y+a.x*s+a.y*o}))}function ri(t,e,i,n,r,o){let s=n*Math.PI/180,a=Math.cos(s),l=Math.sin(s);for(let c=0;c<=4;c++)for(let d=0;d<=6;d++){let h=e*(d/6-.5),u=i*(c/4-.5),m={x:t.x+h*a-u*l,y:t.y+h*l+u*a};if(!Y(m,r,o))return!1}return!0}function Zr(t,e,i){let n=U(t),r=[i];for(let s=1;s<12;s+=1)for(let a=1;a<12;a+=1){let l={x:n.x+n.width*a/12,y:n.y+n.height*s/12};Y(l,t,e)&&r.push(l)}let o=[t,...e];return r.map(s=>({point:s,room:wi(s,o)})).sort((s,a)=>a.room-s.room).map(s=>s.point).filter((s,a,l)=>a===l.findIndex(c=>Math.abs(c.x-s.x)<1e-6&&Math.abs(c.y-s.y)<1e-6))}var Qr=require("konva/lib/Group"),Jr=require("konva/lib/Shape");function Ka(t,e,i){let n=e.length,r={x:(e[n-1].x+e[0].x)/2,y:(e[n-1].y+e[0].y)/2};t.moveTo(r.x,r.y);for(let o=0;o<n;o+=1){let s=e[o],a=e[(o+1)%n],l=e[(o-1+n)%n],c=Math.min(Math.hypot(s.x-l.x,s.y-l.y)/2,Math.hypot(a.x-s.x,a.y-s.y)/2);t.arcTo(s.x,s.y,a.x,a.y,Math.max(0,Math.min(i,c)))}t.closePath()}function Je(t,e,i,n){let r=ht(t)>0,o=i.cornerRadius&&i.cornerRadius>0?i.cornerRadius:0;return new Jr.Shape({...i,sceneFunc(s,a){s.beginPath();let l=d=>{if(d.length){if(o>0&&d.length>=3)return Ka(s,d,o);s.moveTo(d[0].x,d[0].y);for(let h=1;h<d.length;h+=1)s.lineTo(d[h].x,d[h].y);s.closePath()}};n?(d=>{s.moveTo(d.start.x,d.start.y);let h=d.start;for(let u of d.segments)u.kind==="line"?s.lineTo(u.end.x,u.end.y):u.kind==="arc"?s.arc(u.center.x,u.center.y,u.radius,Math.atan2(h.y-u.center.y,h.x-u.center.x),Math.atan2(u.end.y-u.center.y,u.end.x-u.center.x),!u.clockwise):s.bezierCurveTo(u.control1.x,u.control1.y,u.control2.x,u.control2.y,u.end.x,u.end.y),h=u.end;s.closePath()})(n):l(t);for(let d of e??[]){let h=ht(d)>0;l(h===r?[...d].reverse():d)}s.fillStrokeShape(a)},perfectDrawEnabled:!1})}var vt=class extends Qr.Group{constructor(){super(...arguments);this.viewportCulled=!1}setViewportCulled(i){i!==this.viewportCulled&&(this.viewportCulled=i,i||super._clearSelfAndDescendantCache())}isViewportCulled(){return this.viewportCulled}drawScene(...i){return this.viewportCulled?this:super.drawScene(...i)}drawHit(...i){return this.viewportCulled?this:super.drawHit(...i)}_clearSelfAndDescendantCache(i){if(!this.viewportCulled){super._clearSelfAndDescendantCache(i);return}this._clearCache(i)}};var oi=class{constructor(e){this.pointers=new Map;this.pinch=null;this.panLast=null;this.panStart=null;this.panStarted=!1;this.movedPx=0;this.lastTapAt=0;this.onPointerDown=e=>{this.host.cancelGlide();let i=this.toLocal(e);if(this.pointers.set(e.pointerId,i),this.pointers.size===1)this.movedPx=0,this.pinch=null,this.panStart=i,this.panStarted=!1,this.host.marqueeShouldStart(e)?(this.host.beginMarquee(i),this.panLast=null):this.panLast=i;else if(this.pointers.size===2){this.host.marqueeActive()&&this.host.cancelMarquee();let[n,r]=[...this.pointers.values()],o={x:(n.x+r.x)/2,y:(n.y+r.y)/2},s=this.host.stage.scaleX();this.pinch={startDist:Math.hypot(r.x-n.x,r.y-n.y),startScale:s,worldMid:{x:(o.x-this.host.stage.x())/s,y:(o.y-this.host.stage.y())/s}},this.panLast=null,this.panStart=null,this.panStarted=!0,this.movedPx=Re+1}};this.onPointerMove=e=>{if(!this.pointers.has(e.pointerId))return;e.preventDefault();let i=this.toLocal(e);if(this.pointers.set(e.pointerId,i),this.pointers.size===1&&this.panStart?this.movedPx=Math.max(this.movedPx,Math.hypot(i.x-this.panStart.x,i.y-this.panStart.y)):this.pointers.size>=2&&(this.movedPx=Re+1),this.host.marqueeActive()){this.host.updateMarquee(i);return}if(this.pinch&&this.pointers.size>=2){this.host.releaseSectionFocusDim();let[n,r]=[...this.pointers.values()],o=Math.hypot(r.x-n.x,r.y-n.y);if(this.pinch.startDist<1)return;let s={x:(n.x+r.x)/2,y:(n.y+r.y)/2},{min:a,max:l}=this.host.zoomBounds(),c=V(this.pinch.startScale*(o/this.pinch.startDist),a,l);this.host.stage.scale({x:c,y:c}),this.host.stage.position({x:s.x-this.pinch.worldMid.x*c,y:s.y-this.pinch.worldMid.y*c}),this.host.updateSeatGroupVisibility(),this.host.stage.batchDraw(),this.host.scheduleViewChange()}else if(this.panLast&&this.pointers.size===1){if(!this.panStarted){if(this.movedPx<=Re)return;this.panStarted=!0,this.host.releaseSectionFocusDim()}this.host.stage.position({x:this.host.stage.x()+(i.x-this.panLast.x),y:this.host.stage.y()+(i.y-this.panLast.y)}),this.panLast=i,this.host.updateSeatGroupVisibility(),this.host.stage.batchDraw(),this.host.scheduleViewChange()}};this.onPointerEnd=e=>{if(this.host.marqueeActive()){this.host.finishMarquee(),this.pointers.delete(e.pointerId),this.pointers.size===0&&(this.panLast=null);return}this.pointers.delete(e.pointerId),this.pointers.size<2&&(this.pinch=null),this.pointers.size===1&&(this.panLast=[...this.pointers.values()][0],this.panStart=this.panLast,this.panStarted=!0),this.pointers.size===0&&(this.panLast=null,this.panStart=null,this.panStarted=!1,this.host.afterViewChange())};this.host=e}get moved(){return this.movedPx}attach(){let{container:e}=this.host;e.addEventListener("pointerdown",this.onPointerDown,{passive:!1}),e.addEventListener("pointermove",this.onPointerMove,{passive:!1}),e.addEventListener("pointerup",this.onPointerEnd,{passive:!1}),e.addEventListener("pointercancel",this.onPointerEnd,{passive:!1})}detach(){let{container:e}=this.host;e.removeEventListener("pointerdown",this.onPointerDown),e.removeEventListener("pointermove",this.onPointerMove),e.removeEventListener("pointerup",this.onPointerEnd),e.removeEventListener("pointercancel",this.onPointerEnd)}resetPan(){this.panLast=null,this.panStart=null,this.panStarted=!1}isGhostClick(e){return e.type==="tap"?(this.lastTapAt=performance.now(),!1):this.lastTapAt>0&&performance.now()-this.lastTapAt<Dr}toLocal(e){let i=this.host.container.getBoundingClientRect();return{x:e.clientX-i.left,y:e.clientY-i.top}}};var en=require("konva/lib/shapes/Rect"),eo=require("konva/lib/shapes/Text");function to(t){let e=t.effScale(),i=t.stage.scaleX(),n={width:t.stage.width(),height:t.stage.height()},r=f=>Math.round(f*100)/100,o=t.seats.map(f=>{let p=t.circleById.get(f.id),g=t.boothLabelById.get(f.id)??t.seatLabelById.get(f.id),v=t.viewMode==="perspective"?t.perspectiveSeatScale.get(f.id)??1:1,y=(t.viewMode==="perspective"?i:e)*v,x=f.kind==="booth"?Ve:ye*t.seatLabelScale(f),I=t.viewMode==="perspective"&&f.kind!=="booth"?e*v:y,k=r((g?.fontSize()??x)*I),w=t.worldToScreen(f),M=w.x<0||w.x>n.width||w.y<0||w.y>n.height,C=t.focusedSeatOpacity(f.id,p?.getAbsoluteOpacity()??0),L=t.seatSection.get(f.id),R=!!g?.isVisible()&&C>=.5&&!M,S;R||(C<.5?S="dimmed-or-unavailable":k<Q?S="below-minimum-size":M?S="outside-viewport":g?S="renderer-hidden":S="clutter-or-fit");let T=g?g.width()*i*v:0,E=g?g.height()*(t.viewMode==="perspective"&&f.kind==="booth"?i:e)*v:0,O=p instanceof en.Rect?p.width()*i*v:t.seatR*2*y,F=p instanceof en.Rect?p.height()*(t.viewMode==="perspective"?i:e)*v:t.seatR*2*y,j=2*(t.seatR*y+$t),_=p?.fill(),G=g?.fill(),X=t.accessGlyphById.get(f.id),D=X?.getAbsoluteScale();return{seatId:f.id,label:f.label,kind:f.kind==="booth"?"booth":"seat",markerShape:f.kind==="booth"?"booth":f.wheelchairSpaceType==="no-seat"?"square":"circle",...f.wheelchairSpaceType?{wheelchairSpaceType:f.wheelchairSpaceType}:{},categoryKey:f.categoryKey,...L?{sectionId:L.id}:{},...L?.zone?{zoneId:L.zone}:{},status:t.statusById.get(f.id)??"free",selected:t.selection.has(f.id),visible:R,renderedFontPx:k,fill:typeof _=="string"?_:"",ink:typeof G=="string"?G:p?t.seatLabelInk(f,p):t.seatPreferredLabelInk(f),opacity:r(C),...X?{accessibilityMarker:{glyphVisible:X.isVisible(),glyphWidthPx:r(ce*Math.abs(D?.x??0)),emphasizedByFilter:t.accessGlyphFilterEmphasized(f.id)}}:{},pointerTarget:{active:!t.cached&&!t.seatViewportCulled(f.id)&&!!p?.isVisible()&&!!p?.isListening()&&t.isSelectable(f.id),directWidthPx:r(O),directHeightPx:r(F),effectiveMinimumPx:r(Math.max(Math.min(O,F),j))},screenCenter:{x:r(w.x),y:r(w.y)},...R?{screenBox:{x:r(w.x-T/2),y:r(w.y-E/2),width:r(T),height:r(E)}}:{},...S?{hiddenReason:S}:{}}}),s=o.filter(f=>f.visible).length,a=(f,p,g,v,y,x)=>{let I=ni({x:v.x(),y:v.y()},v.width(),v.height(),v.rotation()),k=x&&x.liftWorld>0?t.isoLiftLocal(x.liftWorld):{x:0,y:0},w=U(I.map(T=>t.worldToScreen({x:T.x+k.x,y:T.y+k.y}))),M=r(v.opacity()),C=v.fill(),L=w.x+w.width<0||w.x>n.width||w.y+w.height<0||w.y>n.height,R=v.isVisible()&&M>.05&&!L,S=x?ri({x:v.x(),y:v.y()},v.width(),v.height(),v.rotation(),x.outline,x.holes):void 0;return{id:f,kind:p,role:g,label:v.text(),visible:R,renderedFontPx:r(v.fontSize()*i),opacity:M,fill:y,ink:typeof C=="string"?C:"",...S==null?{}:{fitsContainer:S},...R?{screenBox:{x:r(w.x),y:r(w.y),width:r(w.width),height:r(w.height)}}:{}}},l=[...t.sections.map(f=>{let p=f.blockPoly.fill();return a(f.id,"section","name",f.nameLabel,typeof p=="string"?p:f.baseFill,f)}),...t.sections.map(f=>{let p=f.blockPoly.fill();return a(`${f.id}:availability`,"section","availability",f.subLabel,typeof p=="string"?p:f.baseFill,f)}),...t.zones.flatMap(f=>[a(f.id,"zone","name",f.label,f.background),...f.sub?[a(`${f.id}:price`,"zone","price",f.sub,f.background)]:[]])],c=[...t.gaById].map(([f,p])=>{let g=p.points.map(L=>t.worldToScreen(L)),v=Math.min(...g.map(L=>L.x)),y=Math.min(...g.map(L=>L.y)),x=Math.max(...g.map(L=>L.x)),I=Math.max(...g.map(L=>L.y)),k=x<0||v>n.width||I<0||y>n.height,w=r(p.polygon.opacity()),M=w>=.1&&!k,C=p.polygon.fill();return{areaId:f,label:p.label,capacity:p.capacity,categoryKey:p.categoryKey,...p.sectionId?{sectionId:p.sectionId}:{},visible:M,interactive:p.polygon.listening(),opacity:w,fill:typeof C=="string"?C:"",effectiveBackground:p.effectiveBackground,...M?{screenBox:{x:r(v),y:r(y),width:r(x-v),height:r(I-y)}}:{}}}),d=[...t.freeTextById].map(([f,p])=>{let{node:g,background:v,kind:y}=p,x=t.worldToScreen({x:g.x(),y:g.y()}),I=g.width()*i,k=g.height()*e,w=x.x-g.offsetX()*i,M=x.y-g.offsetY()*e,C=r(g.fontSize()*e),L=w+I<0||w>n.width||M+k<0||M>n.height,R=g.isVisible()&&!L,S=g.fill(),T=r(g.getAbsoluteOpacity()),E;return R||(C<Q?E="below-minimum-size":L?E="outside-viewport":E="renderer-hidden"),{objectId:p.objectId??f,kind:y,text:g.text(),visible:R,renderedFontPx:C,ink:typeof S=="string"?S:"",background:v,opacity:T,...R?{screenBox:{x:r(w),y:r(M),width:r(I),height:r(k)}}:{},...E?{hiddenReason:E}:{}}}),h=t.labelGroup.find(f=>f.getAttr("rowLabel")===!0).filter(f=>f instanceof eo.Text).map(f=>{let p=f.getClientRect({skipShadow:!0,skipStroke:!0}),g=p.x+p.width<0||p.x>n.width||p.y+p.height<0||p.y>n.height,v=f.fill();return{text:f.text(),visible:f.isVisible()&&!g,renderedFontPx:r(f.fontSize()*e),ink:typeof v=="string"?v:"",...g?{}:{screenBox:{x:r(p.x),y:r(p.y),width:r(p.width),height:r(p.height)}}}}),u=he(t.canvasBackground),m=new Set(["normal","nearly-gone","sold-out","closed"].map(f=>Ze(u,f).toLowerCase())),b=t.sections.filter(f=>f.blockPoly.opacity()>.05);return{viewport:n,projection:t.viewMode,...t.viewMode==="perspective"?{perspective:{model:"pinhole-exact-seat-anchors",sectionSurfaceModel:"tangent-plane",exactSeatAnchorCount:t.perspectiveSeatProjected.size,depthSorted:!0}}:{},canvasBackground:t.canvasBackground,effectiveScale:r(e),rung:t.getRung(),minimumVisibleLabelPx:Q,totalLabelledBookableUnits:o.length,visibleLabels:s,hiddenLabels:o.length-s,totalBookableUnits:o.length+c.reduce((f,p)=>f+p.capacity,0),selectionRingSeatIds:t.overlayLayer.find(".selection-ring").map(f=>String(f.getAttr("seatId")??"")).filter(Boolean),selectionRingColor:t.effSelection,focusedSectionId:t.focusedSectionId,focusBackdropVisible:!!t.focusBackdrop?.isVisible(),categoryFilterKeys:t.categoryFilter?[...t.categoryFilter].sort():null,overviewStyle:{visibleSectionShells:b.length,categoryPaintedSectionShells:b.filter(f=>{let p=f.blockPoly.fill();return typeof p!="string"||!m.has(p.toLowerCase())}).length,visibleCategoryDetailOutlines:t.sections.filter(f=>f.outlinePoly.opacity()>.05).length,visibleSectionRowHints:0,visibleSectionAvailabilityLabels:t.sections.filter(f=>f.subLabel.opacity()>.05).length,visibleSectionGADetails:[...t.gaById.values()].filter(f=>f.sectionId!=null&&f.polygon.opacity()>.05).length},labels:o,gaAreas:c,hierarchyLabels:l,freeTextLabels:d,rowLabels:h}}var po=require("konva/lib/shapes/Circle"),fo=require("konva/lib/shapes/Ellipse"),mo=require("konva/lib/shapes/Line"),bo=require("konva/lib/shapes/Arrow"),go=require("konva/lib/shapes/Path"),ai=require("konva/lib/shapes/Rect"),li=require("konva/lib/shapes/Text"),yo=require("konva/lib/shapes/Image");var io="M13 4.6a1.6 1.6 0 1 0-3.2 0 1.6 1.6 0 0 0 3.2 0 M11 6.5V13h5l2.4 6 M15 16.4A5 5 0 1 1 9 11.3",no=[{key:"restroom-men",label:"Men's restroom",group:"facilities",path:"M16 7a4 4 0 1 0-8 0 4 4 0 0 0 8 0 M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"},{key:"restroom-women",label:"Women's restroom",group:"facilities",path:"M15 5a3 3 0 1 0-6 0 3 3 0 0 0 6 0 M12 8l-4 10h8l-4-10 M10 18v4 M14 18v4"},{key:"restroom-accessible",label:"Accessible restroom",group:"facilities",path:io},{key:"first-aid",label:"First aid",group:"facilities",path:"M5 4h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z M12 8v8 M8 12h8"},{key:"coat-check",label:"Coat check",group:"facilities",path:"M12 6a2 2 0 0 1 0-4 2 2 0 0 1 1.6 3.2L21 13H3l8.4-7.8 M3 13h18"},{key:"atm",label:"ATM / cash",group:"facilities",path:"M2 6h20v12H2V6Z M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0 M6 9h.01 M18 15h.01"},{key:"info",label:"Info point",group:"facilities",path:"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18 M12 11v5 M12 8h.01"},{key:"lost-found",label:"Lost & found",group:"facilities",path:"M11 4a7 7 0 1 0 0 14 7 7 0 0 0 0-14 M16 16l5 5 M9 8.5a2 2 0 1 1 3 1.7c-.8.5-1 .8-1 1.8 M11 15h.01"},{key:"restrooms",label:"Restrooms",group:"facilities",path:"M6 3h12a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M12 8a2 2 0 1 0 0 4 2 2 0 0 0 0-4 M9 18v-3.5a3 3 0 0 1 6 0V18"},{key:"charging",label:"Charging point",group:"facilities",path:"M3 8h13v8H3V8Z M16 10h3v4h-3 M9.6 9l-2 3.5h2.5l-1.5 3"},{key:"smoking",label:"Smoking area",group:"facilities",path:"M2 15h13v3H2v-3Z M18 16h2 M19 8c0 1 1 1.5 1 2.5S19 12 19 13"},{key:"no-smoking",label:"No smoking",group:"facilities",path:"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18 M5.6 5.6l12.8 12.8 M7 13h6v2H7v-2Z"},{key:"food",label:"Food",group:"food-drink",path:"M7 3v6a2 2 0 0 0 4 0V3 M9 11v10 M17 3c-1.6 1-2.2 3-2.2 6 0 2 .9 3.2 2.2 3.6V21"},{key:"bar",label:"Bar",group:"food-drink",path:"M4 5h16l-8 8-8-8Z M12 13v6 M8 20h8"},{key:"coffee",label:"Caf\xE9 / coffee",group:"food-drink",path:"M4 8h13v4a5 5 0 0 1-5 5H9a5 5 0 0 1-5-5V8Z M17 9h2a2 2 0 0 1 0 4h-2 M8 2v2 M11 2v2 M4 21h14"},{key:"water",label:"Water / drinks",group:"food-drink",path:"M12 22a7 7 0 0 1-7-7c0-5 7-12 7-12s7 7 7 12a7 7 0 0 1-7 7Z"},{key:"merch",label:"Merch / shop",group:"food-drink",path:"M6 8h12l-1 12H7L6 8Z M9 8V6a3 3 0 0 1 6 0v2"},{key:"screen",label:"Screen",group:"facilities",path:"M3 4h18v12H3V4Z M9 20h6 M12 16v4 M10 8l4 2-4 2V8Z"},{key:"sound-booth",label:"Sound booth",group:"facilities",path:"M6 4v16 M6 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4 M12 4v16 M12 8a2 2 0 1 0 0 4 2 2 0 0 0 0-4 M18 4v16 M18 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4"},{key:"entrance",label:"Entrance",group:"navigation",path:"M14 3h5a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-5 M3 12h11 M10 8l4 4-4 4"},{key:"exit",label:"Exit",group:"navigation",path:"M10 3H5a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h5 M14 12h7 M17 8l4 4-4 4"},{key:"emergency-exit",label:"Emergency exit",group:"navigation",path:"M14 4.6a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0 M12.5 8l-3.5 2 1.6 3.6-2 4.4 M12.5 10l3.5 1.5 M9 10.5l-3.5 1 M15 12h6 M18 9l3 3-3 3"},{key:"stairs",label:"Stairs",group:"navigation",path:"M3 20v-4h4v-4h4v-4h4V4h5"},{key:"elevator",label:"Elevator",group:"navigation",path:"M5 3h14a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M8 11l1.5-2 1.5 2 M8 14l1.5 2 1.5-2 M15 8v8"},{key:"parking",label:"Parking",group:"navigation",path:"M5 3h14a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M9 17V7h4a3 3 0 0 1 0 6H9"},{key:"wheelchair",label:"Wheelchair access",group:"accessibility",path:io},{key:"hearing",label:"Hearing assistance",group:"accessibility",path:"M8 20a4 4 0 0 1-2-3c0-1 .5-2 .5-3a4.5 4.5 0 1 1 9 0c0 1.4-1 2-2 2.4-1.2.5-1.5 1-1.5 2.2 M17 6a5 5 0 0 1 1 6 M19.5 4a8 8 0 0 1 1.2 9"}];var Ua=new Map(no.map(t=>[t.key,t]));function Xa(t){return t?Ua.get(t):void 0}function ro(t){return Xa(t)?.path}var id=no.map(t=>t.key);var Ya="round",qa="round",oo="none";function so(t){return{lineCap:t.lineCap??Ya,lineJoin:t.lineJoin??qa,startEnding:t.startEnding??oo,endEnding:t.endEnding??oo}}function ao(t){return{pointerLength:Math.min(48,Math.max(8,t*3)),pointerWidth:Math.min(40,Math.max(8,t*2.25))}}function tn(t,e){return e.length===0?!!t.accessible:!!t.accessibility?.some(i=>e.includes(i))}var si="#0b1220",kt="#ffffff",lo="#0b1220",co="#232c40",uo="#8b93a7";function ho(t,e,i="normal"){let n=t?"bold":i;return e?`italic ${n}`.trim():n}var nn="#0e1117";function So(t,e){let i=new window.Image,n=new yo.Image({image:i,x:e.x+e.width/2,y:e.y+e.height/2,offsetX:e.width/2,offsetY:e.height/2,width:e.width,height:e.height,rotation:e.rotation??0,opacity:V(e.opacity??1,0,1),listening:!1,perfectDrawEnabled:!1});e.layer==="foreground"?t.fgDecorGroup.add(n):t.bgLayer.add(n),t.trackAssetImage(i,e.href,`Decor image \u201C${e.label||e.id}\u201D`,()=>{let r=n.getLayer();r&&r.batchDraw()})}function vo(t,e){if(e.shape==="round")t.bgLayer.add(new po.Circle({x:e.center.x,y:e.center.y,radius:e.radius??40,fill:"#232c40",stroke:"#2a3348",strokeWidth:1.5,listening:!1}));else{let n=e.width??80,r=e.height??50;t.bgLayer.add(new ai.Rect({x:e.center.x,y:e.center.y,width:n,height:r,offsetX:n/2,offsetY:r/2,rotation:e.rotation,fill:"#232c40",stroke:"#2a3348",strokeWidth:1.5,cornerRadius:4,listening:!1}))}let i=xt(t,t.bgLayer,e.displayLabel??e.label,e.center.x,e.center.y,"#cbd5e1",12,!0);t.freeTextById.set(e.id,{node:i,background:"#232c40",kind:"table"})}function ko(t,e){let i=e.background?.color??t.canvasBackground,n=e.color??t.theme.textColor??uo,r=e.semanticKind==="icon"?ro(e.iconKey):void 0;if(r){let c=e.fontSize/24,d=new go.Path({x:e.position.x,y:e.position.y,data:r,rotation:e.rotation,scaleX:c,scaleY:c,stroke:J(i,n),strokeWidth:2,lineCap:"round",lineJoin:"round",fillEnabled:!1,listening:!1,perfectDrawEnabled:!1});t.iconNodeById.set(e.id,{node:d,fontSize:e.fontSize}),t.bgLayer.add(d);return}let o=e.background?.padding??0,s=e.opacity??1,a=new li.Text({x:e.position.x,y:e.position.y,text:e.text,fontSize:e.fontSize,rotation:e.rotation,fontStyle:ho(e.bold,e.italic,"600"),fill:J(i,n),fontFamily:e.fontFamily??t.labelFont(),...e.width!=null?{width:e.width}:{},align:e.align??"left",lineHeight:e.lineHeight??1.2,letterSpacing:e.letterSpacing??0,textDecoration:e.underline?"underline":"",padding:o,opacity:s,wrap:"word",listening:!1,perfectDrawEnabled:!1,name:"buyer-free-text"}),l;e.background&&(l=new ai.Rect({x:e.position.x,y:e.position.y,width:a.width(),height:a.height(),rotation:e.rotation,fill:e.background.color,opacity:s*(e.background.opacity??.9),cornerRadius:e.background.cornerRadius??4,listening:!1,perfectDrawEnabled:!1,name:"buyer-text-background"}),t.bgLayer.add(l)),t.freeTextById.set(e.id,{node:a,backdrop:l,background:i,kind:"free-text"}),t.bgLayer.add(a)}function xo(t,e){let i=e.fill??t.theme.decorFill??co,n=e.role==="stage",r=e.role==="reference-focal",o=!!e.role&&!n,s=he(t.canvasBackground),a=r?s.focalFill:i,l=e.kind==="line"||e.kind==="polyline",c=e.stroke?.color??(n?we(a,.28):r?s.focalStroke:l?"#9aa3b5":void 0),d=e.stroke?.width??(n?1:r||l?2:0),h=e.opacity!=null?V(e.opacity,.1,1):1,u=0,m=0;if(l&&e.points&&e.points.length>=2){u=e.points.reduce((g,v)=>g+v.x,0)/e.points.length,m=e.points.reduce((g,v)=>g+v.y,0)/e.points.length;let b=so(e),f=ao(d),p=new bo.Arrow({points:e.points.flatMap(g=>[g.x,g.y]),closed:!1,x:u,y:m,offsetX:u,offsetY:m,rotation:e.rotation??0,stroke:c,fill:c,strokeWidth:d,opacity:h,lineCap:b.lineCap,lineJoin:b.lineJoin,pointerAtBeginning:b.startEnding==="arrow",pointerAtEnding:b.endEnding==="arrow",...f,listening:!1,name:"buyer-shape-open-path"});p.setAttr("shapeObjectId",e.id),t.bgLayer.add(p)}else if(e.kind==="rect"&&e.x!=null&&e.y!=null&&e.width!=null&&e.height!=null){let b=n?{fillLinearGradientStartPoint:{x:0,y:0},fillLinearGradientEndPoint:{x:0,y:e.height},fillLinearGradientColorStops:[0,ge(a,.3),1,we(a,.12)]}:{fill:a};u=e.x+e.width/2,m=e.y+e.height/2,t.bgLayer.add(new ai.Rect({x:u,y:m,offsetX:e.width/2,offsetY:e.height/2,rotation:e.rotation??0,width:e.width,height:e.height,...b,stroke:c,strokeWidth:d,cornerRadius:V(e.cornerRadius??4,0,Math.min(e.width,e.height)/2),opacity:h,listening:!1}))}else if(e.kind==="ellipse"&&e.x!=null&&e.y!=null&&e.width!=null&&e.height!=null){u=e.x+e.width/2,m=e.y+e.height/2;let b=n?{fillLinearGradientStartPoint:{x:0,y:-e.height/2},fillLinearGradientEndPoint:{x:0,y:e.height/2},fillLinearGradientColorStops:[0,ge(a,.3),1,we(a,.12)]}:{fill:a};t.bgLayer.add(new fo.Ellipse({x:u,y:m,rotation:e.rotation??0,radiusX:e.width/2,radiusY:e.height/2,...b,stroke:c,strokeWidth:d,opacity:h,listening:!1}))}else if(e.kind==="polygon"&&e.points&&e.points.length){let b=e.points.flatMap(g=>[g.x,g.y]),f=U(e.points);u=e.points.reduce((g,v)=>g+v.x,0)/e.points.length,m=e.points.reduce((g,v)=>g+v.y,0)/e.points.length;let p=n?{fillLinearGradientStartPoint:{x:0,y:f.y},fillLinearGradientEndPoint:{x:0,y:f.y+f.height},fillLinearGradientColorStops:[0,ge(a,.3),1,we(a,.12)]}:{fill:a};t.bgLayer.add(new mo.Line({points:b,closed:!0,x:u,y:m,offsetX:u,offsetY:m,rotation:e.rotation??0,...p,stroke:c,strokeWidth:d,opacity:h,listening:!1}))}if(e.label)if(n){let b=Qa(t,u,m,e.label,a);t.primaryFocalLabels.set(b,22),t.freeTextById.set(e.id,{node:b,background:a,kind:"stage"})}else if(o){let b=xt(t,t.bgLayer,e.label,u,m,r?J(a,"#e6e9f0"):"#9aa3b5",r?18:12,!1);r&&t.primaryFocalLabels.set(b,18),t.freeTextById.set(e.id,{node:b,background:a,kind:"decor"})}else{let b=xt(t,t.bgLayer,e.label,u,m,"#cbd5e1",16,!0);t.freeTextById.set(e.id,{node:b,background:a,kind:"decor"})}}function Qa(t,e,i,n,r){let o=J(r,"#e6e9f0"),s=new li.Text({x:e,y:i,text:n.toUpperCase(),fontSize:22,fontStyle:"700",letterSpacing:4,fontFamily:t.labelFont(),fill:o,listening:!1,perfectDrawEnabled:!1});return s.offsetX(s.width()/2),s.offsetY(s.height()/2),t.bgLayer.add(s),s}function wo(t,e){let i=t.catColor.get(e.categoryKey)??"#6e7bff",n=t.canvasBackground,r=fr(i,n,je),o=t.theme.textColor??"#e6e9f0",s=J(r,o),a=Je(e.points,e.holes,{fill:i,opacity:je,stroke:i,strokeWidth:1.5,cornerRadius:e.cornerRadius});a.setAttr("gaId",e.id),a.on("click tap",u=>{t.isGhostClick(u)||t.opts.onGAClick?.(e.id)}),a.on("mouseenter",()=>{t.container.style.cursor="pointer"}),a.on("mouseleave",()=>{t.container.style.cursor="default"}),t.bgLayer.add(a);let l=at(e.points,e.holes),c=t.sections.find(u=>Y(l,u.outline,u.holes)),d=xt(t,t.bgLayer,e.displayLabel??e.label,l.x,l.y-8,s,ur,!1),h=xt(t,t.bgLayer,`cap ${e.capacity}`,l.x,l.y+10,s,hr,!1);t.freeTextById.set(`${e.id}:label`,{objectId:e.id,node:d,background:r,kind:"ga-label",categoryKey:e.categoryKey}),t.freeTextById.set(`${e.id}:capacity`,{objectId:e.id,node:h,background:r,kind:"ga-capacity",categoryKey:e.categoryKey}),t.gaById.set(e.id,{label:e.displayLabel??e.label,capacity:e.capacity,categoryKey:e.categoryKey,points:e.points,polygon:a,effectiveBackground:r,...c?{sectionId:c.logicalId}:{}})}function xt(t,e,i,n,r,o,s,a){let l=new li.Text({x:n,y:r,text:i,fontSize:s,fontStyle:a?"700":"500",fontFamily:t.labelFont(),fill:o,listening:!1,perfectDrawEnabled:!1});return l.offsetX(l.width()/2),l.offsetY(l.height()/2),e.add(l),l}function Io(t,e){let i=[],n=e.theme.background??"#0e1117",r=new Map,o=(c,d)=>{let h=r.get(c)??[];h.push(d),r.set(c,h)};for(let c of e.seats){if(c.kind==="booth")continue;let d=c.logicalRowId??c.rowId;o(d,c),d!==c.rowId&&o(c.rowId,c)}let s=c=>c.logicalSeatIndex??Number(c.id.split(":").pop()??0);for(let c of t.objects){if(c.type!=="row")continue;let d=c.segmentedRow?.repeatLabelOnComponents===!0;if(c.segmentedRow&&!d&&c.segmentedRow.componentIndex!==0)continue;let h=d?c.labelPresentation:c.segmentedRow?.labelPresentation??c.labelPresentation;if(h?.visible===!1||h?.positionPreset==="none")continue;let u=c.segmentedRow&&!d?c.segmentedRow.groupId:c.id,m=(r.get(u)??[]).slice().sort((R,S)=>s(R)-s(S));if(!m.length)continue;let b=m[0],f=m[m.length-1],p=h?.labelStyle,g=J(n,p?.color??e.theme.rowLabelColor??e.theme.textColor??"#e6e9f0",Vt),v=p?.size??12,y=h?.rotation??0,x=c.segmentedRow?.displayLabel??c.displayLabel??c.label,I=e.objectFilteredOut(c)?.15:1,k=e.seatSection.get(b.id),w=k?[...new Set([k.id,k.logicalId,k.zone].filter(R=>!!R))]:void 0,M=(R,S,T)=>i.push({text:x,x:R,y:S,rotation:y,fontSize:v,ink:g,opacity:I,...w?.length?{focusKeys:w}:{},...T?{automaticAway:T}:{}});if(h?.position){M(h.position.x,h.position.y);continue}let C=e.seatR+12,L=h?.positionPreset??"start";if(L==="start"||L==="both"){let R=c.rotation*Math.PI/180,S={x:-Math.cos(R),y:-Math.sin(R)};M(b.x+S.x*C,b.y+S.y*C,S)}if(L==="end"||L==="both"){let R=(c.rotation+c.curve)*Math.PI/180,S={x:Math.cos(R),y:Math.sin(R)};M(f.x+S.x*C,f.y+S.y*C,S)}}let a=(e.seatR+12)*2.2,l=[];for(let c of i){let d=l.find(h=>h.text===c.text&&Math.hypot(h.x-c.x,h.y-c.y)<=a);if(d){d.x=(d.x+c.x)/2,d.y=(d.y+c.y)/2;continue}l.push(c)}return l}function rn(t,e,i=ee){let n=t.rotation()*Math.PI/180,r=Math.abs(Math.cos(n)),o=Math.abs(Math.sin(n)),s=(t.width()*r+t.height()*o)/2+i,a=(t.width()*o+t.height()*r)/2+i;return{x:e.x-s,y:e.y-a,width:s*2,height:a*2}}function To(t,e,i,n){let r={x:e.x,y:e.y},o=e.automaticAway;if(!o)return r;let s={x:-o.y,y:o.x},a=Math.max(7,Math.min(16,e.fontSize*.75)),l=[{x:0,y:0}];for(let u=1;u<=4;u++){let m=a*u;l.push({x:s.x*m,y:s.y*m},{x:-s.x*m,y:-s.y*m},{x:o.x*m,y:o.y*m},{x:(o.x+s.x)*m,y:(o.y+s.y)*m},{x:(o.x-s.x)*m,y:(o.y-s.y)*m})}let c=r,d=1/0,h=1/0;for(let u of l){let m={x:r.x+u.x,y:r.y+u.y},b=rn(t,m),p=(n?Kt(n,b,{mode:"overlap"}).length:0)+i.collisionCount(b),g=Math.hypot(u.x,u.y);if((p<d||p===d&&g<h)&&(c=m,d=p,h=g),p===0)break}return c}function Lo(t,e){let i=t.sectionHeat.get(e.id)??t.sectionHeat.get(e.logicalId)??(e.zone?t.sectionHeat.get(e.zone):void 0);if(i==null||i<=0){e.outlinePoly.stroke(le(e.outlineTint,.5)),e.outlinePoly.fill(le(e.outlineTint,.08)),e.outlinePoly.strokeWidth(1.75),e.outlinePoly.shadowOpacity(0);return}let n=zt("#f4b740","#ef4444",i);e.outlinePoly.stroke(le(n,.72+i*.25)),e.outlinePoly.fill(le(n,.08+i*.13)),e.outlinePoly.strokeWidth(2+i*3.5),e.outlinePoly.shadowColor(n),e.outlinePoly.shadowBlur(4+i*12),e.outlinePoly.shadowOpacity(.25+i*.45)}function on(t,e){return t.closedSections.has(e.id)||t.closedSections.has(e.logicalId)||e.zone!=null&&t.closedSections.has(e.zone)}function sn(t,e){return on(t,e)?"closed":e.total<=0?"normal":e.free<=0?"sold-out":e.free<=e.total*Wr?"nearly-gone":"normal"}function Co(t,e){let i=sn(t,e);e.blockPoly.fill(Ze(he(t.canvasBackground),i)),e.subLabel.text(i==="sold-out"?oe("map.soldOut"):oe("map.seatsLeft",{count:e.free})),e.subLabel.offsetX(e.subLabel.width()/2)}function Mo(t,e){let i,n;t.reducedMotion?(i=e<=Te?1:0,n=e<=$e?1:0):(i=V((qe-e)/(qe-Te),0,1),n=V((Te-e)/(Te-$e),0,1)),(t.floorOverview||t.focusedSectionId)&&(i=0,n=0);let r=!t.floorOverview&&!t.focusedSectionId&&e<se;r&&(i=1),t.zones.length||(n=0);let o=t.viewMode==="perspective"&&t.glideInProgress&&t.seatCount>2500;t.seatLayer.opacity(r||o?0:1-i);let s=t.stageScaleX,a=!t.glideInProgress&&(t.lodScale===0||Math.abs(e-t.lodScale)/(t.lodScale||1)>.08);a&&t.setLodScale(e);let l=t.focusedSectionId,c=he(t.canvasBackground),d=V((i-.2)/.8,0,1);for(let u of t.sections){let m=t.hasFocusDimOverlay?1:l&&u.id!==l&&u.logicalId!==l&&u.zone!==l?St:1;u.outlinePoly.opacity(r?0:(1-i)*m),u.blockPoly.opacity(Gr*i*m),u.blockPoly.stroke(c.sectionStroke),u.blockPoly.strokeWidth(Jt/Math.max(s,1e-4));let b=u.blockPoly.fill(),f=J(typeof b=="string"?b:u.baseFill,u.preferredInk);u.nameLabel.fill(f),u.subLabel.fill(f),a&&d>.01&&tl(t,u,s),u.nameLabel.opacity(u.nameLabelFits?d*(1-n)*m:0),u.subLabel.opacity(0)}let h=n*(1-t.isoT);for(let u of t.zones)u.back.opacity(h),u.label.opacity(h),u.sub&&u.sub.opacity(h),a&&il(t,u,s);if(!t.glideInProgress&&(d>.01||h>.01)){el(t,s),Ja(t.sections);for(let u of t.zones){let m=u.label.opacity();u.back.opacity(m),u.sub&&u.sub.opacity(m)}}t.bgLayer.batchDraw()}function Ja(t){let e=new Map;for(let i of t)(e.get(i.logicalId)??e.set(i.logicalId,[]).get(i.logicalId)).push(i);for(let i of e.values()){if(i.length<2)continue;let n=i.filter(r=>r.nameLabel.opacity()>.05).sort((r,o)=>{let s=U(r.outline),a=U(o.outline);return a.width*a.height-s.width*s.height});for(let r of n.slice(1))r.nameLabel.opacity(0)}}function el(t,e){let n=[],r=a=>{let l=t.worldToScreen({x:a.x(),y:a.y()}),c=U(ni({x:0,y:0},a.width()*e,a.height()*e,a.rotation()));return{x:l.x-c.width/2,y:l.y-c.height/2,w:c.width,h:c.height}};for(let a of t.zones){if(a.label.opacity()<=.05)continue;let l=t.worldToScreen(a.anchor),c=a.back.width()*e,d=a.back.height()*e;n.push({node:a.label,tier:0,section:!1,box:{x:l.x-c/2,y:l.y-d/2,w:c,h:d}})}for(let a of t.sections)a.nameLabel.opacity()>.05&&n.push({node:a.nameLabel,tier:1,section:!0,area:a.labelArea,box:r(a.nameLabel)});if(n.length<2)return;n.sort((a,l)=>a.tier-l.tier||(l.area??0)-(a.area??0)||a.box.y-l.box.y||a.box.x-l.box.x);let o=[],s=a=>o.some(l=>a.x<l.x+l.w+4&&l.x<a.x+a.w+4&&a.y<l.y+l.h+4&&l.y<a.y+a.h+4);for(let a of n){if(!s(a.box)){o.push(a.box);continue}let l=!1;if(a.section){let c=a.node.fontSize(),d=a.node.y();for(let h of Vr){let u=c*h;if(u*e<Qi)break;wt(a.node,u,d);let m=r(a.node);if(!s(m)){o.push(m),l=!0;break}}l||wt(a.node,c,d)}l||a.node.opacity(0)}}function wt(t,e,i){t.fontSize(Math.max(1,e)),t.offsetX(t.width()/2),t.offsetY(t.height()/2),t.y(i)}function tl(t,e,i){e.subLabelFits=!1;let n=Math.min(1,Math.max(.66,t.stageWidth/900)),r=Hr*e.labelScale*n,o=Math.min(Qi*e.labelScale,r);for(let s=r;s>=o;s-=1)for(let a of[0,-90]){e.nameLabel.rotation(a),wt(e.nameLabel,s/i,e.nameLabel.y());for(let l of e.labelAnchors){e.nameLabel.position(l);let c=8/i;if(ri(l,e.nameLabel.width()+c,e.nameLabel.height()+c,a,e.outline,e.holes)){e.nameLabelFits=!0;return}}}e.nameLabel.position(e.centroid),e.nameLabel.rotation(0),e.nameLabelFits=!1}function il(t,e,i){let n=Math.min(1,Math.max(.66,t.stageWidth/900)),r=10*n/i,o=6*n/i,s=e.sub?3*n/i:0;wt(e.label,ei*n/i,e.anchor.y),e.sub&&wt(e.sub,jr*n/i,e.anchor.y);let a=Math.max(e.label.width(),e.sub?.width()??0)+r*2,l=e.label.height()+(e.sub?s+e.sub.height():0)+o*2;e.label.y(e.anchor.y-(e.sub?(s+e.sub.height())/2:0)),e.sub&&e.sub.y(e.anchor.y+(e.label.height()+s)/2),e.back.position(e.anchor),e.back.size({width:a,height:l}),e.back.offset({x:a/2,y:l/2}),e.back.cornerRadius(7*n/i),e.back.strokeWidth(1/i);let c=e.back.getAbsolutePosition(),d=62+l*i/2;if(c.y<d){let h=(d-c.y)/i;e.label.y(e.label.y()+h),e.sub&&e.sub.y(e.sub.y()+h),e.back.y(e.back.y()+h)}}var Po=require("konva/lib/Group"),an=require("konva/lib/shapes/Line"),Ro=require("konva/lib/shapes/Rect"),ln=require("konva/lib/shapes/Text");function Eo(t){let e=t.exportMode?Math.max(t.effScale(),ue):t.effScale(),i=e>=ue;for(let[o,s]of t.boothLabelById){let a=t.circleById.get(o);s.visible(Ie(s.fontSize(),e)&&!!a?.isVisible()&&t.focusedSeatOpacity(o,a?.getAbsoluteOpacity()??1)>=.5)}t.labelGroup.destroyChildren(),t.labelLiftGroups.clear(),t.seatLabelById.clear();let n=0;if(i)for(let o of t.visibleSeatCandidates()){if(o.kind==="booth")continue;let s=t.worldToScreen(o);if(s.x<-20||s.x>t.stage.width()+20||s.y<-20||s.y>t.stage.height()+20||t.accessGlyphById.has(o.id)&&t.accessGlyphShouldShow(o.id))continue;let a=t.circleById.get(o.id);if(!a?.isVisible()||t.focusedSeatOpacity(o.id,a.getAbsoluteOpacity())<.5)continue;let l=t.statusById.get(o.id)??"free",c=t.renderedSeatPoint(o),d=t.viewMode==="perspective"?t.perspectiveSeatScale.get(o.id)??1:1;if(l==="booked"||l==="held"&&!t.ownedHold.has(o.id)&&!t.opts.manageMode){let f=new Po.Group({x:c.x,y:c.y,listening:!1});if(f.scale({x:d,y:d}),l==="held"?(f.add(new Ro.Rect({x:-4.2,y:-.7,width:8.4,height:6.5,cornerRadius:1.3,stroke:"#ffffff",strokeWidth:1.25,listening:!1})),f.add(new an.Line({points:[-2.4,-.8,-2.4,-2.7,-1.2,-4,0,-4.35,1.2,-4,2.4,-2.7,2.4,-.8],stroke:"#ffffff",strokeWidth:1.2,lineCap:"round",lineJoin:"round",listening:!1}))):f.add(new an.Line({points:[-4.2,4.2,4.2,-4.2],stroke:"#ffffff",strokeWidth:1.8,lineCap:"round",listening:!1})),t.seatLabelContainer(o.id).add(f),++n>=Zi)break;continue}let u=ye*t.seatLabelScale(o),m=new ln.Text({x:c.x,y:c.y,text:Ht(o.displayLabel??o.label),fontSize:u,fontStyle:"600",fontFamily:t.labelFont(),fill:a?t.seatLabelInk(o,a):t.seatPreferredLabelInk(o),listening:!1,perfectDrawEnabled:!1}),b=t.seatR*2-3;if(m.width()>b&&m.fontSize(Math.max(bt,u*b/m.width())),m.width()>b+.01){m.destroy();continue}if(!Ie(m.fontSize(),e)){m.destroy();continue}if(m.offsetX(m.width()/2),m.offsetY(m.height()/2),m.scale({x:d,y:d}),t.seatLabelContainer(o.id).add(m),t.seatLabelById.set(o.id,m),++n>=Zi)break}let r=new Qe;for(let{node:o}of t.freeTextById.values()){if(!o.isVisible())continue;let s=o.getClientRect({relativeTo:t.bgLayer,skipShadow:!0,skipStroke:!0});r.insert({x:s.x-ee,y:s.y-ee,width:s.width+ee*2,height:s.height+ee*2})}for(let o of t.rowLabelPlan){let s=t.focusedSectionId!=null&&o.focusKeys?.includes(t.focusedSectionId),a=s?Math.max(o.fontSize,_r/Math.max(e,1e-4)):o.fontSize;if(!s&&!Ie(a,e))continue;let l=t.worldToScreen({x:o.x,y:o.y});if(l.x<-40||l.x>t.stage.width()+40||l.y<-40||l.y>t.stage.height()+40)continue;let c=new ln.Text({x:o.x,y:o.y,text:o.text,fontSize:a,fontStyle:"700",fontFamily:t.labelFont(),fill:o.ink,rotation:o.rotation,opacity:o.opacity,shadowColor:"#05070c",shadowBlur:o.ink.toLowerCase()==="#ffffff"?5:0,shadowOpacity:o.ink.toLowerCase()==="#ffffff"?.8:0,shadowForStrokeEnabled:!1,listening:!1,perfectDrawEnabled:!1});c.offsetX(c.width()/2),c.offsetY(c.height()/2);let d=t.resolveAutomaticRowLabelPosition(c,o,r);c.position(d),c.setAttr("rowLabel",!0),r.insert(t.rowLabelBox(c,d)),t.labelGroup.add(c)}t.isoT>0&&t.viewMode!=="perspective"&&t.applyUprightLabels(),t.overlayLayer.batchDraw()}function It(t){return{th:Zt*Math.PI/180*t.isoT,sg:1-(1-yt)*t.isoT}}function Ao(t,e){let{th:i,sg:n}=It(e),r=e.centre,o=t.x-r.x,s=t.y-r.y,a=o*Math.cos(i)-s*Math.sin(i),l=(o*Math.sin(i)+s*Math.cos(i))*n;return{x:r.x+a,y:r.y+l}}function Bo(t,e){let{th:i,sg:n}=It(e),r=e.centre,o=t.x-r.x,a=(t.y-r.y)/n,l=o*Math.cos(i)+a*Math.sin(i),c=-o*Math.sin(i)+a*Math.cos(i);return{x:r.x+l,y:r.y+c}}function Oo(t,e){let{th:i,sg:n}=It(e),r=t*e.isoT;return{x:-(r/n)*Math.sin(i),y:-(r/n)*Math.cos(i)}}function Fo(t,e,i){let n=xr(e);t.offset(i),t.position(re(e,i)),t.rotation(n.rotationDeg),t.scale({x:n.scaleX,y:n.scaleY}),t.skewX(n.skewX),t.skewY(0)}function Do(t){t.position({x:0,y:0}),t.offset({x:0,y:0}),t.scale({x:1,y:1}),t.rotation(0),t.skewX(0),t.skewY(0)}function _o(t,e){let i=Math.hypot(e.x-t.surfaceFocal.x,e.y-t.surfaceFocal.y),n=Math.max(0,i-t.frontDistanceWorld);return t.liftWorld+n*Math.tan(t.rakeDeg*Math.PI/180)}function zo(t,e,i){return t.perspectiveAffine?re(t.perspectiveAffine,e):re(i,e)}function No(t,e){return e?re(e,t):t}function Go(t,e){let i=0;for(let h of t.seats){let u=Math.max(0,(h.eyeHeightM??W)-W);i=Math.max(i,u*De)}for(let h of t.objects)h.type==="section"&&(i=Math.max(i,xe(h,{floorBaseHeightM:t.floorBaseHeightMFor(h.id)}).height*De));let n=Sr(t.bounds,i),r=Ut(n,n.target),o=vr(r);e.seatLocal.clear(),e.seatProjected.clear(),e.seatDepth.clear(),e.seatScale.clear();let s=1/0,a=1/0,l=-1/0,c=-1/0;for(let h of t.seats){let u=Math.max(0,(h.eyeHeightM??W)-W),m=ie(n,h,u*De),b={x:m.x,y:m.y};e.seatProjected.set(h.id,b),e.seatLocal.set(h.id,re(o,b)),e.seatDepth.set(h.id,m.depth),e.seatScale.set(h.id,m.scale),s=Math.min(s,m.x),a=Math.min(a,m.y),l=Math.max(l,m.x),c=Math.max(c,m.y)}for(let h of[{x:t.bounds.x,y:t.bounds.y},{x:t.bounds.x+t.bounds.width,y:t.bounds.y},{x:t.bounds.x+t.bounds.width,y:t.bounds.y+t.bounds.height},{x:t.bounds.x,y:t.bounds.y+t.bounds.height}]){let u=ie(n,h,0);s=Math.min(s,u.x),a=Math.min(a,u.y),l=Math.max(l,u.x),c=Math.max(c,u.y)}let d=Math.max(24,t.seatR*3);return{camera:n,baseAffine:r,baseInverse:o,bounds:Number.isFinite(s)?{x:s-d,y:a-d,width:Math.max(1,l-s+d*2),height:Math.max(1,c-a+d*2)}:null}}function Ho(t,e,i){let n=i?[...i].map(r=>t.seatById.get(r)).filter(r=>!!r):e?t.seats:[...t.perspectiveAppliedSeats].map(r=>t.seatById.get(r)).filter(r=>!!r);for(let r of n){if(e&&t.perspectiveAppliedSeats.has(r.id))continue;let o=e?t.perspectiveSeatProjected.get(r.id)??r:r,s=e?t.perspectiveSeatScale.get(r.id)??1:1,a=t.circleById.get(r.id);a?.position(o),a?.scale({x:s,y:s});let l=t.accessRingById.get(r.id);l?.position(o),l?.scale({x:s,y:s});let c=t.accessGlyphById.get(r.id);if(c){let h=t.seatR*1.5/ce;c.position(o),c.scale({x:h*s,y:h*s})}let d=t.boothLabelById.get(r.id);d?.position(o),d?.scale({x:s,y:s}),e&&t.perspectiveAppliedSeats.add(r.id)}e||t.perspectiveAppliedSeats.clear()}function cn(t){return t?.getAttr?.("seatId")??void 0}var Lt=class Lt{constructor(e,i={}){this.labelLiftGroups=new Map;this.seats=[];this.seatById=new Map;this.seatIndex=null;this.chartDoc=null;this.activeFloorId="";this.stacked=!1;this.floorOverview=!1;this.circleById=new Map;this.boothDims=new Map;this.boothLabelById=new Map;this.seatLabelById=new Map;this.accessRingById=new Map;this.accessGlyphById=new Map;this.freeTextById=new Map;this.iconNodeById=new Map;this.primaryFocalLabels=new Map;this.gaById=new Map;this.statusById=new Map;this.catColor=new Map;this.theme={};this.canvasBackground=nn;this.effSelection=kt;this.colorblind=!1;this.cbHueByKey=new Map;this.rowLabelPlan=[];this.catOrder=[];this.selection=new Set;this.selectionMarkers=new Map;this.ownedHold=new Set;this.selectionFocusId=null;this.hoveredId=null;this.focusedId=null;this.accessFilter=null;this.categoryHighlight=null;this.categoryFilter=null;this.commercialLimitedFilter=!1;this.sections=[];this.zones=[];this.seatSection=new Map;this.unsectionedSeatGroup=null;this.catPrice=new Map;this.dimmedSections=new Set;this.sectionHeat=new Map;this.closedSections=new Set;this.focusedSectionId=null;this.focusBackdrop=null;this.focusDimOverlay=null;this.objectFloor=new Map;this.zoneColor=new Map;this.hasSections=!1;this.hasBoothText=!1;this.isoT=0;this.isoTarget=0;this.isoRaf=0;this.viewMode="flat";this.perspectiveCamera=null;this.perspectiveBaseAffine=null;this.perspectiveBaseInverse=null;this.perspectiveSeatLocal=new Map;this.perspectiveSeatProjected=new Map;this.perspectiveSeatDepth=new Map;this.perspectiveSeatScale=new Map;this.perspectiveAppliedSeats=new Set;this.perspectiveBounds=null;this.isoCentre={x:0,y:0};this.glideRaf=0;this.glideInProgress=!1;this.destroyed=!1;this.lodScale=0;this.reducedMotion=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;this.fitScale=1;this.seatR=mt;this.bounds={x:0,y:0,width:1,height:1};this.cached=!1;this.dpr=Math.min(typeof window<"u"&&window.devicePixelRatio||1,2);this.assetGeneration=0;this.assetPromises=[];this.assetErrors=[];this.assetCancels=new Set;this.rafId=0;this.frames=0;this.lastFpsAt=0;this.recacheTimer=null;this.resizeObs=null;this.viewChangeRaf=0;this.marquee=null;this.marqueeCur=null;this.onKeyDown=e=>{if(this.opts.manageMode){if((e.metaKey||e.ctrlKey)&&(e.key==="a"||e.key==="A")){e.preventDefault(),this.opts.onMarquee?.(this.selectAllSelectable());return}if(e.key==="Escape"&&this.selection.size){e.preventDefault(),this.clearSelection(),this.opts.onMarquee?.([]);return}}let i=e.key==="ArrowLeft"?{x:-1,y:0}:e.key==="ArrowRight"?{x:1,y:0}:e.key==="ArrowUp"?{x:0,y:-1}:e.key==="ArrowDown"?{x:0,y:1}:null;if(i){e.preventDefault();let n=this.focusedId?this.nearestSeat(this.focusedId,i):this.seats[0]?.id??null;n&&this.focusSeat(n);return}if((e.key==="Enter"||e.key===" ")&&this.focusedId){e.preventDefault(),this.toggleSeat(this.focusedId);let n=this.seatById.get(this.focusedId);n&&this.opts.onFocusSeat?.(n)}};this.container=e,this.opts={maxSelection:10,selectableStatuses:["free"],...i},this.exportMode=i.exportMode===!0,this.currency=i.currency;let n=Tt.Konva.pixelRatio;this.exportMode&&(this.dpr=1),Tt.Konva.pixelRatio=this.dpr,this.stage=new Vo.Stage({container:e,width:e.clientWidth||1,height:e.clientHeight||1,draggable:!1}),this.gestures=new oi(this.pointerHost),this.exportMode||(e.style.touchAction="none",this.gestures.attach(),e.tabIndex<0&&(e.tabIndex=0),e.setAttribute("role","application"),e.getAttribute("aria-label")||e.setAttribute("aria-label",oe("map.aria")),e.addEventListener("keydown",this.onKeyDown)),this.bgLayer=new ci.Layer({listening:!this.exportMode}),this.seatLayer=new ci.Layer({listening:!this.exportMode}),this.overlayLayer=new ci.Layer({listening:!1}),this.labelGroup=new Le.Group({listening:!1}),this.overlayLayer.add(this.labelGroup),this.fgDecorGroup=new Le.Group({listening:!1}),this.overlayLayer.add(this.fgDecorGroup),this.hoverRing=new ve.Circle({radius:mt+2,stroke:"#ffffff",strokeWidth:2,opacity:.85,listening:!1,visible:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1}),this.overlayLayer.add(this.hoverRing),this.focusRing=new ve.Circle({radius:mt+3,stroke:"#38bdf8",strokeWidth:2.5,dash:[4,3],opacity:.95,listening:!1,visible:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1}),this.overlayLayer.add(this.focusRing),this.stage.add(this.bgLayer,this.seatLayer,this.overlayLayer),this.exportMode&&(Tt.Konva.pixelRatio=n),this.exportMode||(this.wireInteraction(),this.startFpsLoop()),!this.exportMode&&typeof ResizeObserver<"u"&&(this.resizeObs=new ResizeObserver(()=>this.handleResize()),this.resizeObs.observe(e))}get moved(){return this.gestures.moved}isGhostClick(e){return this.gestures.isGhostClick(e)}get pointerHost(){return{container:this.container,stage:this.stage,cancelGlide:()=>this.cancelGlide(),releaseSectionFocusDim:()=>this.releaseSectionFocusDim(),updateSeatGroupVisibility:()=>this.updateSeatGroupVisibility(),scheduleViewChange:()=>this.scheduleViewChange(),afterViewChange:()=>this.afterViewChange(),zoomBounds:()=>this.zoomBounds(),marqueeActive:()=>!!this.marquee,marqueeShouldStart:e=>!!(this.opts.manageMode&&this.opts.marqueeSelect&&e.pointerType!=="touch"&&e.button===0&&this.getRung()==="seats"),beginMarquee:e=>this.beginMarquee(e),updateMarquee:e=>this.updateMarquee(e),finishMarquee:()=>this.finishMarquee(),cancelMarquee:()=>this.cancelMarquee()}}setChart(e,i){if(e!==this.chartDoc&&(this.stacked=!1,this.floorOverview=!1),this.cancelAssetLoads(),this.chartDoc=e,this.activeFloorId=i?.floorId??Ne(e)[0].id,this.objectFloor.clear(),e.floors&&e.floors.length>1)for(let r of e.floors)for(let o of r.objects)this.objectFloor.set(o.id,r.id),o.type==="section"&&o.logicalSectionId&&this.objectFloor.set(o.logicalSectionId,r.id);let n=this.floorView(e);this.focusedId=null,this.focusRing.visible(!1),this.bgLayer.destroyChildren(),this.focusDimOverlay?.destroy(),this.focusDimOverlay=null,this.seatLayer.clearCache(),this.seatLayer.listening(!this.exportMode),this.seatLayer.destroyChildren(),this.unsectionedSeatGroup=null,this.labelGroup.destroyChildren(),this.labelLiftGroups.clear(),this.fgDecorGroup.destroyChildren(),this.circleById.clear(),this.boothDims.clear(),this.boothLabelById.clear(),this.seatLabelById.clear(),this.accessRingById.clear(),this.accessGlyphById.clear(),this.freeTextById.clear(),this.iconNodeById.clear(),this.primaryFocalLabels.clear(),this.gaById.clear();for(let r of this.selectionMarkers.values())r.destroy();this.selectionMarkers.clear(),this.ownedHold.clear(),this.selectionFocusId=null,this.statusById.clear(),this.selection.clear(),this.seatById.clear(),this.seatIndex=null,this.cached=!1,this.accessFilter=null,this.sections=[],this.zones=[],this.seatSection.clear(),this.focusedSectionId=null,this.focusBackdrop=null,this.catPrice.clear(),this.zoneColor.clear(),this.lodScale=0,this.hasBoothText=!1,this.isoRaf&&(cancelAnimationFrame(this.isoRaf),this.isoRaf=0),this.isoT=0,this.isoTarget=0,this.viewMode="flat",this.perspectiveCamera=null,this.perspectiveBaseAffine=null,this.perspectiveBaseInverse=null,this.perspectiveSeatLocal.clear(),this.perspectiveSeatProjected.clear(),this.perspectiveSeatDepth.clear(),this.perspectiveSeatScale.clear(),this.perspectiveAppliedSeats.clear(),this.perspectiveBounds=null,this.resetLayerTransforms(),this.hasSections=n.objects.some(r=>r.type==="section");for(let r of e.zones??[])r.color&&this.zoneColor.set(r.id,r.color);this.seatLayer.opacity(1),this.hoverRing.visible(!1),this.hoveredId=null,this.theme=e.theme??{},this.seatR=V(this.theme.seatScale??1,.7,1.6)*mt,this.container.style.background="",this.canvasBackground=this.resolveCanvasBackground(),this.container.style.background=this.canvasBackground,this.effSelection=this.resolveSelectionColor(),this.hoverRing.stroke(this.effSelection),this.hoverRing.radius(this.seatR+2),this.catColor.clear(),this.catPrice.clear(),this.catOrder=e.categories.map(r=>r.key),this.cbHueByKey.clear(),[...this.catOrder].sort().forEach((r,o)=>{this.cbHueByKey.set(r,ii[o%ii.length])});for(let r of e.categories)this.catColor.set(r.key,r.color),typeof r.price=="number"&&this.catPrice.set(r.key,r.price);for(let r of n.objects)r.type==="booth"&&this.boothDims.set(r.id,{width:r.width,height:r.height,rotation:r.rotation,...r.points&&r.points.length>=3?{points:r.points.map(o=>({x:o.x,y:o.y}))}:{}});this.seats=be(n,{floorBaseHeightM:this.stacked||this.floorOverview?0:this.floorBaseHeightMFor()});for(let r of this.seats)this.seatById.set(r.id,r),this.statusById.set(r.id,"free");this.seatIndex=yr(this.seats,{seatRadius:this.seatR}),this.bounds=Dt(n),this.isoCentre={x:this.bounds.x+this.bounds.width/2,y:this.bounds.y+this.bounds.height/2},this.buildPerspectiveProjection(n),this.renderBackground(n),this.unsectionedSeatGroup=new Le.Group({listening:!this.exportMode}),this.seatLayer.add(this.unsectionedSeatGroup),this.renderSeats(),this.buildRowLabelPlan(n),this.overlayLayer.add(this.labelGroup),this.overlayLayer.add(this.fgDecorGroup),this.overlayLayer.add(this.hoverRing),this.overlayLayer.add(this.focusRing),this.zoomToFit()}floorView(e){if(!e.floors||!e.floors.length)return{...e,referenceImage:void 0,backgroundImage:Xe(e)};if(this.floorOverview&&e.floors.length>=2)return{...zi(e),referenceImage:void 0,backgroundImage:Xe(e)};if(this.stacked&&e.floors.length>=2)return{..._i(e),referenceImage:void 0,backgroundImage:Xe(e)};let i=e.floors.find(n=>n.id===this.activeFloorId)??e.floors[0];return{...e,objects:i.objects,focalPoint:i.focalPoint,referenceImage:void 0,backgroundImage:Xe(i),floors:void 0}}floorBaseHeightMFor(e){let i=this.chartDoc?.floors;if(!i?.length)return 0;let n=this.stacked&&e?this.objectFloor.get(e)??this.activeFloorId:this.activeFloorId;return i.find(r=>r.id===n)?.baseHeightM??0}setStacked(e){!this.chartDoc||e===this.stacked||!(this.chartDoc.floors&&this.chartDoc.floors.length>=2)||(this.stacked=e,e&&(this.floorOverview=!1),this.setChart(this.chartDoc,{floorId:this.activeFloorId}))}isStacked(){return this.stacked}setFloorOverview(e){!this.chartDoc||e===this.floorOverview||!(this.chartDoc.floors&&this.chartDoc.floors.length>=2)||(this.floorOverview=e,e&&(this.stacked=!1),this.setChart(this.chartDoc,{floorId:this.activeFloorId}))}isFloorOverview(){return this.floorOverview}setActiveFloor(e){!this.chartDoc||e===this.activeFloorId&&!this.floorOverview&&!this.stacked||(this.floorOverview=!1,this.stacked=!1,this.setChart(this.chartDoc,{floorId:e}))}getFloors(){return this.chartDoc?Ne(this.chartDoc).map(e=>({id:e.id,name:e.name})):[]}getActiveFloorId(){return this.activeFloorId}setStatus(e,i){let n=!1,r=this.hasSections?new Set:null;for(let o of e){if(!this.statusById.has(o))continue;let s=this.statusById.get(o);this.statusById.set(o,i);let a=this.circleById.get(o);if(a&&(this.paintSeat(a,o),n=!0),r){let l=this.seatSection.get(o);l&&(s==="free"!=(i==="free")&&(l.free+=i==="free"?1:-1),r.add(l))}}if(r&&r.size){for(let o of r)this.refreshSectionFill(o);this.bgLayer.batchDraw()}n&&(this.cached?(this.recacheTimer&&clearTimeout(this.recacheTimer),this.recacheTimer=setTimeout(()=>this.cacheSeatLayer(),150)):this.seatLayer.batchDraw(),this.effScale()>ue&&this.updateLabels())}setSeatCategories(e){let i=!1,n=new Set;for(let[o,s]of Object.entries(e)){let a=this.seatById.get(o);if(!a||!this.catColor.has(s)||a.categoryKey===s)continue;a.categoryKey=s;let l=this.circleById.get(o);l&&(this.paintSeat(l,o),i=!0);let c=this.seatSection.get(o);c&&n.add(c)}if(!i)return;let r=new Map((this.chartDoc?Ne(this.chartDoc):[]).flatMap(o=>o.objects).filter(o=>o.type==="section").map(o=>[o.id,o]));for(let o of n){if(!r.get(o.id)?.color){let a=new Map;for(let l of o.memberIds){let c=this.seatById.get(l)?.categoryKey;c&&a.set(c,(a.get(c)??0)+1)}o.baseFill=Wi([...a].map(([l,c])=>({hex:this.catColor.get(l)??"#6e7bff",w:c})),"#3a4358")}this.refreshSectionFill(o)}n.size&&this.bgLayer.batchDraw(),this.cached?(this.recacheTimer&&clearTimeout(this.recacheTimer),this.recacheTimer=setTimeout(()=>this.cacheSeatLayer(),150)):this.seatLayer.batchDraw(),this.effScale()>ue&&this.updateLabels()}setOwnedHold(e){let i=new Set((e??[]).filter(r=>this.statusById.has(r))),n=new Set([...this.ownedHold,...i]);this.ownedHold=i;for(let r of n){let o=this.circleById.get(r);o&&this.paintSeat(o,r),this.syncSelectionMarker(r)}n.size&&(this.cached?(this.recacheTimer&&clearTimeout(this.recacheTimer),this.recacheTimer=setTimeout(()=>this.cacheSeatLayer(),150)):this.seatLayer.batchDraw(),this.effScale()>ue&&this.updateLabels(),this.overlayLayer.batchDraw())}setSelectionFocus(e){let i=e&&this.selection.has(e)?e:null;if(i===this.selectionFocusId)return;let n=this.selectionFocusId;this.selectionFocusId=i;for(let r of this.seats){let o=this.circleById.get(r.id);o&&this.paintSeat(o,r.id)}n&&this.syncSelectionMarker(n),i&&this.syncSelectionMarker(i);for(let[r,o]of this.selectionMarkers)o.opacity(!i||r===i?1:.2);this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw(),this.overlayLayer.batchDraw()}getStatus(e){return this.statusById.get(e)??"free"}getSelection(){let e=[];for(let i of this.selection){let n=this.seatById.get(i);n&&e.push(n)}return e}clearSelection(){let e=[...this.selection];for(let i of e)this.setSelected(i,!1,!0);this.overlayLayer.batchDraw()}setMaxSelection(e){this.opts.maxSelection=Math.max(0,Math.floor(e))}select(e){let i=[];for(let n of e){if(this.selection.has(n)||!this.isSelectable(n))continue;if(this.selection.size>=this.opts.maxSelection){this.opts.onSelectionLimit?.(this.opts.maxSelection);break}this.setSelected(n,!0,!0);let r=this.seatById.get(n);r&&i.push(r)}return i.length&&this.overlayLayer.batchDraw(),i}setManageInteraction(e){this.marquee&&this.cancelMarquee(),this.gestures.resetPan(),this.opts.manageMode=e.manageMode,this.opts.marqueeSelect=e.marqueeSelect,this.opts.selectableStatuses=[...e.selectableStatuses],e.maxSelection!=null&&(this.opts.maxSelection=e.maxSelection);let i=[...this.selection].filter(n=>!this.isSelectable(n));i.length&&this.deselect(i),!e.manageMode&&this.selection.size&&this.clearSelection(),this.container.style.cursor="default",this.overlayLayer.batchDraw()}setSectionHeat(e){this.sectionHeat.clear();for(let[i,n]of Object.entries(e??{}))Number.isFinite(n)&&this.sectionHeat.set(i,Math.max(0,Math.min(1,n)));for(let i of this.sections)this.refreshSectionHeat(i);this.bgLayer.batchDraw()}deselect(e){let i=!1;for(let n of e)this.selection.has(n)&&(this.setSelected(n,!1,!0),i=!0);i&&this.overlayLayer.batchDraw()}selectAllSelectable(){if(!this.opts.manageMode)return[];let e=[];for(let i of this.seats)this.isSelectable(i.id)&&e.push(i.id);return this.selectMany(e)}selectByLabels(e){if(!this.opts.manageMode)return[];let i=new Set(e),n=[];for(let r of this.seats)i.has(r.label)&&this.isSelectable(r.id)&&n.push(r.id);return this.selectMany(n)}setEvidenceSelection(e){return!this.seatById.has(e)||!this.isSelectable(e)?!1:(this.selection.size&&this.clearSelection(),this.setSelected(e,!0),this.overlayLayer.batchDraw(),this.selection.has(e))}getSelectableInSection(e){let i=[],n=new Set;for(let r of this.sections)if(!(r.id!==e&&r.logicalId!==e&&r.zone!==e))for(let o of r.memberIds){if(n.has(o)||(n.add(o),!this.isSelectable(o)))continue;let s=this.seatById.get(o);s&&i.push(s)}return i}selectMany(e){let i=e.filter(r=>!this.selection.has(r));if(!i.length)return this.getSelection();let n=this.selection.size+i.length<=zr;for(let r of i)if(n)this.setSelected(r,!0,!0);else{this.selection.add(r);let o=this.circleById.get(r);o&&this.paintSeat(o,r)}return this.cached||this.seatLayer.batchDraw(),this.overlayLayer.batchDraw(),this.getSelection()}beginMarquee(e){let i=this.screenToWorld(e),n=this.stage.scaleX()||1,r=new Ee.Rect({x:i.x,y:i.y,width:0,height:0,stroke:this.effSelection,strokeWidth:1.5/n,dash:[5/n,4/n],fill:"rgba(110,123,255,0.10)",listening:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1});this.overlayLayer.add(r),this.marquee={start:i,rect:r},this.marqueeCur=i,this.overlayLayer.batchDraw()}updateMarquee(e){if(!this.marquee)return;let i=this.screenToWorld(e),{start:n,rect:r}=this.marquee;r.setAttrs({x:Math.min(n.x,i.x),y:Math.min(n.y,i.y),width:Math.abs(i.x-n.x),height:Math.abs(i.y-n.y)}),this.marqueeCur=i,this.overlayLayer.batchDraw()}cancelMarquee(){this.marquee&&(this.marquee.rect.destroy(),this.marquee=null,this.marqueeCur=null,this.overlayLayer.batchDraw())}finishMarquee(){let e=this.marquee;if(this.marquee=null,!e)return;e.rect.destroy(),this.overlayLayer.batchDraw();let i=this.marqueeCur??e.start;this.marqueeCur=null;let n=Math.min(e.start.x,i.x),r=Math.max(e.start.x,i.x),o=Math.min(e.start.y,i.y),s=Math.max(e.start.y,i.y),a=this.stage.scaleX()||1;if((r-n)*a<4&&(s-o)*a<4){this.selection.size&&(this.clearSelection(),this.opts.onMarquee?.([]));return}let l=[];for(let c of this.seats){let d=this.renderedSeatPoint(c);d.x<n||d.x>r||d.y<o||d.y>s||this.isSelectable(c.id)&&l.push(c.id)}this.selectMany(l),this.opts.onMarquee?.(this.getSelection())}flashSeat(e,i="#f43f5e"){let n=this.seatById.get(e);if(!n)return;let r=this.renderedSeatPoint(n),o=new ve.Circle({x:r.x,y:r.y,radius:this.seatR,stroke:i,strokeWidth:3,opacity:.9,listening:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1}),s=this.viewMode==="perspective"?this.perspectiveSeatScale.get(e)??1:1;o.scale({x:s,y:s}),this.overlayLayer.add(o);let a=performance.now(),l=620,c=d=>{if(!o.getLayer())return;let h=Math.min(1,(d-a)/l);o.radius(this.seatR*(1+h*1.8)),o.opacity(.9*(1-h)),this.overlayLayer.batchDraw(),h<1?requestAnimationFrame(c):(o.destroy(),this.overlayLayer.batchDraw())};requestAnimationFrame(c)}flashSection(e,i="#22a06b"){let n=this.sections.filter(r=>r.id===e||r.zone===e);if(n.length)for(let r of n){let o=this.viewMode==="perspective"&&r.perspectiveAffine?r.outline.map(u=>this.perspectiveLocalPoint(this.projectedSectionPoint(r,u))):r.outline.map(u=>{let m=r.liftWorld>0?this.isoLiftLocal(r.liftWorld):{x:0,y:0};return{x:u.x+m.x,y:u.y+m.y}}),s=o.reduce((u,m)=>({x:u.x+m.x,y:u.y+m.y}),{x:0,y:0});s.x/=o.length,s.y/=o.length;let a=new et.Line({x:s.x,y:s.y,points:o.flatMap(u=>[u.x-s.x,u.y-s.y]),closed:!0,stroke:i,strokeWidth:3,strokeScaleEnabled:!1,opacity:.92,listening:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!0,shadowColor:i,shadowBlur:14,shadowOpacity:.7});this.overlayLayer.add(a),this.overlayLayer.batchDraw();let l=()=>{a.getLayer()&&(a.destroy(),this.overlayLayer.batchDraw())};if(this.reducedMotion||typeof document<"u"&&document.hidden){setTimeout(l,520);continue}let c=performance.now(),d=820,h=u=>{if(this.destroyed||!a.getLayer())return;let m=Math.min(1,(u-c)/d),f=1+(1-Math.pow(1-m,3))*.04;a.scale({x:f,y:f}),a.opacity(.92*(1-m)),this.overlayLayer.batchDraw(),m<1?requestAnimationFrame(h):l()};requestAnimationFrame(h)}}nearestSeat(e,i){let n=this.seatById.get(e);if(!n)return null;let r=this.viewMode==="perspective"?this.perspectiveSeatProjected.get(n.id)??n:n,o=null,s=1/0;for(let a of this.seats){if(a.id===e)continue;let l=this.viewMode==="perspective"?this.perspectiveSeatProjected.get(a.id)??a:a,c=l.x-r.x,d=l.y-r.y,h=c*i.x+d*i.y;if(h<=.5)continue;let u=Math.abs(c*i.y-d*i.x),m=h+u*2.5;m<s&&(s=m,o=a.id)}return o}focusSeat(e){let i=this.seatById.get(e);if(!i)return;this.focusedId=e,this.focusRing.radius(this.seatR+3),this.focusRing.position(this.renderedSeatPoint(i));let n=this.viewMode==="perspective"?this.perspectiveSeatScale.get(e)??1:1;this.focusRing.scale({x:n,y:n}),this.focusRing.visible(!0),this.ensureVisible(i),this.overlayLayer.batchDraw(),this.opts.onFocusSeat?.(i)}ensureVisible(e){let i=this.stage.width(),n=this.stage.height(),r=Math.max(this.stage.scaleX(),Pe*1.2),o=this.worldToScreen(e),s=70,a=o.x<s||o.x>i-s||o.y<s||o.y>n-s;if(this.stage.scaleX()<r||a){let l=this.renderedSeatPoint(e),c=this.viewMode==="perspective"&&this.perspectiveBaseAffine?re(this.perspectiveBaseAffine,l):this.isoT===0?l:this.isoForward(l);this.stage.scale({x:r,y:r}),this.stage.position({x:i/2-c.x*r,y:n/2-c.y*r}),this.afterViewChange(),this.stage.batchDraw()}}zoomToFit(){let e=this.stage.width(),i=this.stage.height(),n=this.viewMode==="perspective"&&this.perspectiveBounds?this.perspectiveBounds:this.bounds;if(this.fitScale=Math.min(e/n.width,i/n.height)||1,this.opts.portraitFitCrop&&!this.exportMode){let o=e/n.width<=i/n.height,s=n.height*this.fitScale;o&&s<.55*i&&(this.fitScale=Math.min(this.fitScale*1.3,.62*i/n.height))}let r=this.fitScale;this.stage.scale({x:r,y:r}),this.stage.position({x:(e-n.width*r)/2-n.x*r,y:(i-n.height*r)/2-n.y*r}),this.afterViewChange(),this.stage.batchDraw()}refitCurrentView(){if(this.focusedSectionId&&this.sectionBounds(this.focusedSectionId)){this.focusRegion(this.focusedSectionId,{animate:!1});return}this.zoomToFit()}zoomIn(){let e={x:this.stage.width()/2,y:this.stage.height()/2};this.zoomAbout(this.stage.scaleX()*Lt.ZOOM_STEP,e)}zoomOut(){let e={x:this.stage.width()/2,y:this.stage.height()/2};this.zoomAbout(this.stage.scaleX()/Lt.ZOOM_STEP,e)}seatCount(){return this.seats.length}bookableCount(){let e=this.seats.length;for(let i of this.gaById.values())e+=i.capacity;return e}worldToScreen(e){let i=this.stage.scaleX(),n=e.id,r=typeof n=="string"?this.seatById.get(n):void 0;if(this.viewMode==="perspective"&&this.perspectiveBaseAffine){let a=r?this.perspectiveSeatProjected.get(r.id)??re(this.perspectiveBaseAffine,e):re(this.perspectiveBaseAffine,e);return{x:a.x*i+this.stage.x(),y:a.y*i+this.stage.y()}}let o=r?this.renderedSeatPoint(r):e,s=this.isoT===0?o:this.isoForward(o);return{x:s.x*i+this.stage.x(),y:s.y*i+this.stage.y()}}setAccessibleFilter(e){this.setAccessibilityFilter(e?[]:null)}setAccessibilityFilter(e){let i=e===null?null:[...e];if(!this.sameAccessFilter(i)){this.accessFilter=i,this.updateAccessGlyphs(this.effScale());for(let n of this.seats){let r=this.circleById.get(n.id);r&&this.paintSeat(r,n.id)}this.updateLabels(),this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw()}}sameAccessFilter(e){let i=this.accessFilter;return i===null||e===null?i===e:i.length===e.length&&i.every((n,r)=>n===e[r])}setCommercialLimitedFilter(e){if(this.commercialLimitedFilter!==e){this.commercialLimitedFilter=e;for(let i of this.seats){let n=this.circleById.get(i.id);n&&this.paintSeat(n,i.id)}this.updateLabels(),this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw()}}setCategoryFilter(e){let i=e===null?null:new Set(e);if(!(i===null&&this.categoryFilter===null||i!==null&&this.categoryFilter!==null&&i.size===this.categoryFilter.size&&[...i].every(r=>this.categoryFilter.has(r)))){this.categoryFilter=i;for(let r of this.seats){let o=this.circleById.get(r.id);o&&this.paintSeat(o,r.id)}this.updateLabels(),this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw(),this.applyGAFilterState()}}gaCategoryDimmed(e){return!!(this.categoryHighlight&&e!==this.categoryHighlight||this.categoryFilter&&!this.categoryFilter.has(e))}applyGAFilterState(){this.paintGAStateForView(),this.updateFreeTextVisibility(),this.bgLayer.batchDraw()}paintGAStateForView(){for(let e of this.gaById.values()){let i=!!(this.categoryFilter&&!this.categoryFilter.has(e.categoryKey)),n=!this.exportMode&&e.sectionId!=null&&this.effScale()<se;e.polygon.opacity(n?0:this.gaCategoryDimmed(e.categoryKey)?je*.08:je),e.polygon.listening(!this.exportMode&&!n&&!i)}}focusCategories(e){if(!e?.length){this.focusRegion(this.bounds,{durationMs:Qt});return}let i=new Set(e),n=this.seats.filter(c=>!i.has(c.categoryKey)||this.seatInClosedSection(c.id)?!1:(this.statusById.get(c.id)??"free")==="free"||this.ownedHold.has(c.id));if(!n.length)return;let r=1/0,o=-1/0,s=1/0,a=-1/0;for(let c of n){let d=this.renderedSeatPoint(c);r=Math.min(r,d.x),o=Math.max(o,d.x),s=Math.min(s,d.y),a=Math.max(a,d.y)}let l=Math.max(24,this.seatR*3);r-=l,o+=l,s-=l,a+=l,this.focusRegion({x:r,y:s,width:Math.max(40,o-r),height:Math.max(40,a-s)},{durationMs:Qt})}setViewMode(e){if(e==="perspective"){if(this.viewMode===e){this.afterViewChange();return}let a=this.viewMode==="isometric"&&this.isoT>0;this.viewMode=e,this.isoTarget=1,this.isoT=1,this.isoRaf&&(cancelAnimationFrame(this.isoRaf),this.isoRaf=0),this.applyPerspective(a),this.zoomToFit();return}let i=e==="isometric"?1:0,n=this.viewMode==="perspective";if(this.viewMode=e,this.isoTarget=i,this.isoRaf&&(cancelAnimationFrame(this.isoRaf),this.isoRaf=0),n){this.isoT=i,this.applyIso(),this.afterViewChange();return}if(this.reducedMotion){this.isoT=i,this.applyIso(),this.afterViewChange();return}let r=this.isoT;if(r===i){this.applyIso(),this.afterViewChange();return}let o=performance.now(),s=a=>{if(this.destroyed)return;let l=Math.min(1,(a-o)/Nr),c=l<.5?4*l*l*l:1-Math.pow(-2*l+2,3)/2;this.isoT=r+(this.isoTarget-r)*c,this.applyIso(),this.scheduleViewChange(),l<1?this.isoRaf=requestAnimationFrame(s):(this.isoT=this.isoTarget,this.isoRaf=0,this.applyIso(),this.afterViewChange())};this.isoRaf=requestAnimationFrame(s)}getViewMode(){return this.viewMode}get isoState(){return{isoT:this.isoT,centre:this.isoCentre}}isoParams(){return It(this.isoState)}effScale(){if(this.viewMode==="perspective"&&this.perspectiveBaseAffine){let e=Math.hypot(this.perspectiveBaseAffine.a,this.perspectiveBaseAffine.b),i=Math.hypot(this.perspectiveBaseAffine.c,this.perspectiveBaseAffine.d);return this.stage.scaleX()*Math.min(e,i)}return this.stage.scaleX()*(1-(1-yt)*this.isoT)}isoForward(e){return Ao(e,this.isoState)}isoInverse(e){return Bo(e,this.isoState)}buildPerspectiveProjection(e){let i=Go({seats:this.seats,objects:e.objects,bounds:this.bounds,seatR:this.seatR,floorBaseHeightMFor:n=>this.floorBaseHeightMFor(n)},{seatLocal:this.perspectiveSeatLocal,seatProjected:this.perspectiveSeatProjected,seatDepth:this.perspectiveSeatDepth,seatScale:this.perspectiveSeatScale});this.perspectiveCamera=i.camera,this.perspectiveBaseAffine=i.baseAffine,this.perspectiveBaseInverse=i.baseInverse,this.perspectiveBounds=i.bounds}setContainerAffine(e,i,n){Fo(e,i,n)}resetContainerTransform(e){Do(e)}sectionSurfaceHeight(e,i){return _o(e,i)}projectedSectionPoint(e,i){return zo(e,i,this.perspectiveBaseAffine)}perspectiveLocalPoint(e){return No(e,this.perspectiveBaseInverse)}isoLiftLocal(e){return Oo(e,this.isoState)}resetLayerTransforms(e=!0){let i=e?[this.bgLayer,this.seatLayer,this.overlayLayer]:[this.bgLayer,this.overlayLayer];for(let n of i)n.position({x:0,y:0}),n.offset({x:0,y:0}),n.scale({x:1,y:1}),n.rotation(0),n.skewX(0),n.skewY(0)}resetSectionProjection(e=!0){for(let i of this.sections){this.resetContainerTransform(i.rootGroupBg),this.resetContainerTransform(i.liftGroupBg),e&&this.resetContainerTransform(i.liftGroupSeat),i.rootGroupBg.zIndex(i.bgZIndex),e&&i.liftGroupSeat.zIndex(i.seatZIndex);let n=this.labelLiftGroups.get(i.id);n&&e&&this.resetContainerTransform(n),i.perspectiveAffine=void 0,i.perspectiveCorrection=void 0,i.perspectiveDepth=void 0}}get seatAnchorContext(){return{seats:this.seats,seatById:this.seatById,seatR:this.seatR,perspectiveSeatProjected:this.perspectiveSeatProjected,perspectiveSeatScale:this.perspectiveSeatScale,perspectiveAppliedSeats:this.perspectiveAppliedSeats,circleById:this.circleById,accessRingById:this.accessRingById,accessGlyphById:this.accessGlyphById,boothLabelById:this.boothLabelById}}applyExactSeatAnchors(e,i){Ho(this.seatAnchorContext,e,i)}applyPerspective(e=!0){let i=this.perspectiveCamera,n=this.perspectiveBaseAffine,r=this.perspectiveBaseInverse;if(!i||!n||!r)return;let o=this.seats.length>2500&&this.sections.length>0;this.cached&&!o&&(this.seatLayer.clearCache(),this.seatLayer.listening(!0),this.cached=!1),this.resetLayerTransforms(e),this.resetSectionProjection(e);for(let a of[this.bgLayer,this.overlayLayer])this.setContainerAffine(a,n,i.target);this.perspectiveAppliedSeats.clear(),o||this.applyExactSeatAnchors(!0);for(let a of this.sections){let l=h=>this.sectionSurfaceHeight(a,h),c=Ut(i,a.centroid,l),d=kr(r,c);a.perspectiveAffine=c,a.perspectiveCorrection=d,a.perspectiveDepth=ie(i,a.centroid,l(a.centroid)).depth,this.setContainerAffine(a.liftGroupBg,d,a.centroid);for(let h=0;h<a.sideFaces.length;h++){let u=a.outline[h],m=a.outline[(h+1)%a.outline.length],b=this.perspectiveLocalPoint(ie(i,u,0)),f=this.perspectiveLocalPoint(ie(i,m,0)),p=this.perspectiveLocalPoint(ie(i,m,l(m))),g=this.perspectiveLocalPoint(ie(i,u,l(u)));a.sideFaces[h].points([b.x,b.y,f.x,f.y,p.x,p.y,g.x,g.y]),a.sideFaces[h].opacity(.9)}}let s=[...this.sections].sort((a,l)=>(l.perspectiveDepth??0)-(a.perspectiveDepth??0));for(let a of s)a.rootGroupBg.moveToTop(),a.liftGroupSeat.moveToTop();this.unsectionedSeatGroup?.moveToTop(),this.syncSeatOverlayPositions(),o||this.updateSeatGroupVisibility(),this.bgLayer.batchDraw(),this.seatLayer.batchDraw(),this.overlayLayer.batchDraw()}applyIso(){if(this.resetSectionProjection(),this.applyExactSeatAnchors(!1),this.isoT===0)this.resetLayerTransforms();else{let{th:i,sg:n}=this.isoParams(),r=Math.cos(i),o=n*Math.sin(i),s=-Math.sin(i),a=n*Math.cos(i),l=Math.sqrt(r*r+o*o),c=r*a-o*s,d=Math.atan2(o,r)*180/Math.PI,h=l,u=c/l,m=(r*s+o*a)/c,b=this.isoCentre;for(let f of[this.bgLayer,this.seatLayer,this.overlayLayer])f.position({x:b.x,y:b.y}),f.offset({x:b.x,y:b.y}),f.rotation(d),f.scaleX(h),f.scaleY(u),f.skewX(m),f.skewY(0)}this.applyUprightLabels(),this.applyElevation(),this.updateSeatGroupVisibility(),this.bgLayer.batchDraw(),this.seatLayer.batchDraw(),this.overlayLayer.batchDraw()}applyUprightLabels(){let e=Zt*this.isoT,i=1/(1-(1-yt)*this.isoT),n=this.hasBoothText?[this.bgLayer,this.seatLayer,this.overlayLayer]:[this.bgLayer,this.overlayLayer];for(let r of n){let o=r.find("Text");for(let s of o){let a=s.getAttr("uprightBase");a==null&&(a=s.rotation(),s.setAttr("uprightBase",a)),s.rotation(a-e),s.scaleX(1),s.scaleY(i),s.skewX(0)}}}applyElevation(){let e=this.isoT;for(let i of this.sections){if(i.liftWorld<=0)continue;let n=this.isoLiftLocal(i.liftWorld);i.liftGroupBg?.position(n),i.liftGroupSeat.position(n),this.labelLiftGroups.get(i.id)?.position(n);let r=.9*e;for(let o=0;o<i.sideFaces.length;o++){let s=i.sideFaces[o],a=i.outline[o],l=i.outline[(o+1)%i.outline.length];s.points([a.x,a.y,l.x,l.y,l.x+n.x,l.y+n.y,a.x+n.x,a.y+n.y]),s.opacity(r)}}this.syncSeatOverlayPositions()}destroy(){this.destroyed=!0,this.cancelAssetLoads(),this.rafId&&cancelAnimationFrame(this.rafId),this.isoRaf&&cancelAnimationFrame(this.isoRaf),this.glideRaf&&cancelAnimationFrame(this.glideRaf),this.viewChangeRaf&&cancelAnimationFrame(this.viewChangeRaf),this.recacheTimer&&clearTimeout(this.recacheTimer),this.resizeObs?.disconnect(),this.gestures.detach(),this.container.removeEventListener("keydown",this.onKeyDown),this.stage.destroy()}labelFont(){return this.exportMode?this.theme.fontFamily?.toLowerCase().includes("jetbrains")?"JetBrains Mono, monospace":"Inter, sans-serif":this.theme.fontFamily||"Inter, sans-serif"}seatContainer(e){return this.seatSection.get(e)?.liftGroupSeat??this.unsectionedSeatGroup??this.seatLayer}sectionMatchesFocus(e){let i=this.focusedSectionId;return i==null||e.id===i||e.logicalId===i||e.zone===i}focusedSeatOpacity(e,i){if(!this.focusedSectionId)return i;let n=this.seatSection.get(e);return i*(n&&this.sectionMatchesFocus(n)?1:St)}sectionScreenBounds(e){if(this.viewMode==="perspective"&&e.perspectiveAffine){let s=this.stage.scaleX(),a=this.stage.x(),l=this.stage.y();return U(e.outline.map(c=>{let d=this.projectedSectionPoint(e,c);return{x:d.x*s+a,y:d.y*s+l}}))}let i=e.liftWorld>0?this.isoLiftLocal(e.liftWorld):{x:0,y:0},n=this.stage.scaleX(),r=this.stage.x(),o=this.stage.y();return U(e.outline.map(s=>{let a={x:s.x+i.x,y:s.y+i.y},l=this.isoT===0?a:this.isoForward(a);return{x:l.x*n+r,y:l.y*n+o}}))}updateSeatGroupVisibility(){let e=this.exportMode||this.effScale()>=se,i=this.viewMode==="perspective"&&this.glideInProgress&&this.seats.length>2500,n=96,r=this.stage.width(),o=this.stage.height();for(let s of this.sections){let a=!0;if(e){let c=this.sectionScreenBounds(s);a=c.x+c.width>=-n&&c.y+c.height>=-n&&c.x<=r+n&&c.y<=o+n,a&&this.viewMode==="perspective"&&!i&&this.applyExactSeatAnchors(!0,s.memberIds)}s.liftGroupSeat.setViewportCulled(!a),this.labelLiftGroups.get(s.id)?.setViewportCulled(!a)}this.unsectionedSeatGroup&&!this.unsectionedSeatGroup.visible()&&this.unsectionedSeatGroup.visible(!0),e&&this.viewMode==="perspective"&&!i&&this.applyExactSeatAnchors(!0,this.seats.filter(s=>!this.seatSection.has(s.id)).map(s=>s.id))}visibleSeatCandidates(){if(!this.sections.length)return this.seats;let e=[];for(let i of this.sections)if(!i.liftGroupSeat.isViewportCulled())for(let n of i.memberIds){let r=this.seatById.get(n);r&&e.push(r)}for(let i of this.seats)this.seatSection.has(i.id)||e.push(i);return e}seatViewportCulled(e){return this.seatSection.get(e)?.liftGroupSeat.isViewportCulled()??!1}renderedSeatPoint(e){if(this.viewMode==="perspective")return this.perspectiveSeatLocal.get(e.id)??e;let i=this.seatSection.get(e.id);if(!i||i.liftWorld<=0||this.isoT===0)return e;let n=this.isoLiftLocal(i.liftWorld);return{x:e.x+n.x,y:e.y+n.y}}seatLabelContainer(e){let i=this.seatSection.get(e);if(!i)return this.labelGroup;let n=this.labelLiftGroups.get(i.id);return n||(n=new vt({listening:!1}),n.setViewportCulled(i.liftGroupSeat.isViewportCulled()),n.position(this.viewMode==="perspective"?{x:0,y:0}:this.isoLiftLocal(i.liftWorld)),this.labelGroup.add(n),this.labelLiftGroups.set(i.id,n)),n}syncSeatOverlayPositions(){if(this.hoveredId){let e=this.seatById.get(this.hoveredId);if(e){this.hoverRing.position(this.renderedSeatPoint(e));let i=this.viewMode==="perspective"?this.perspectiveSeatScale.get(e.id)??1:1;this.hoverRing.scale({x:i,y:i})}}if(this.focusedId){let e=this.seatById.get(this.focusedId);if(e){this.focusRing.position(this.renderedSeatPoint(e));let i=this.viewMode==="perspective"?this.perspectiveSeatScale.get(e.id)??1:1;this.focusRing.scale({x:i,y:i})}}for(let[e,i]of this.selectionMarkers){let n=this.seatById.get(e);if(n){i.position(this.renderedSeatPoint(n));let r=this.viewMode==="perspective"?this.perspectiveSeatScale.get(n.id)??1:1;i.scale({x:r,y:r})}}}renderSeats(){let e=[...this.seats].sort((i,n)=>(this.perspectiveSeatDepth.get(n.id)??0)-(this.perspectiveSeatDepth.get(i.id)??0));for(let i of e){if(i.kind==="booth"){this.renderBoothUnit(i);continue}let n=this.seatContainer(i.id),r=i.wheelchairSpaceType==="no-seat"?new Ee.Rect({x:i.x,y:i.y,width:this.seatR*2,height:this.seatR*2,offsetX:this.seatR,offsetY:this.seatR,cornerRadius:2,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1,hitStrokeWidth:0}):new ve.Circle({x:i.x,y:i.y,radius:this.seatR,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1,hitStrokeWidth:0});if(r.setAttr("seatId",i.id),this.circleById.set(i.id,r),this.paintSeat(r,i.id),n.add(r),i.accessible){if(i.wheelchairSpaceType!=="no-seat"){let o=new ve.Circle({x:i.x,y:i.y,radius:this.seatR+1.5,stroke:Et(i.accessibility),strokeWidth:2.5,listening:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1});this.accessRingById.set(i.id,o),n.add(o)}if(i.accessibility?.includes("wheelchair")&&Ki(i.accessibility)){let o=this.buildAccessGlyph(i,typeof r.fill()=="string"?r.fill():"");this.accessGlyphById.set(i.id,o),n.add(o)}}}}renderBoothUnit(e){let i=this.seatContainer(e.id),n=this.boothDims.get(e.rowId)??{width:40,height:30,rotation:0},r=e.x,o=e.y,s;n.points&&n.points.length>=3?(s=new et.Line({x:e.x,y:e.y,points:n.points.flatMap(l=>[l.x,l.y]),closed:!0,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1,hitStrokeWidth:0}),r=e.x+n.points.reduce((l,c)=>l+c.x,0)/n.points.length,o=e.y+n.points.reduce((l,c)=>l+c.y,0)/n.points.length):s=new Ee.Rect({x:e.x,y:e.y,width:n.width,height:n.height,offsetX:n.width/2,offsetY:n.height/2,rotation:n.rotation,cornerRadius:4,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1,hitStrokeWidth:0}),s.setAttr("seatId",e.id),this.circleById.set(e.id,s),i.add(s);let a=new Ce.Text({x:r,y:o,text:e.displayLabel??e.label,fontSize:Ve,fontStyle:"600",fontFamily:this.labelFont(),fill:this.theme.seatLabelColor??si,listening:!1,perfectDrawEnabled:!1});a.offsetX(a.width()/2),a.offsetY(a.height()/2),a.visible(!1),this.hasBoothText=!0,this.boothLabelById.set(e.id,a),i.add(a),this.paintSeat(s,e.id)}buildAccessGlyph(e,i){let n=this.seatR*1.5/ce;return new jo.Path({x:e.x,y:e.y,data:Ki(e.accessibility??[])??"",offsetX:ce/2,offsetY:ce/2,scaleX:n,scaleY:n,fill:Ui(i),listening:!1,visible:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1})}updateAccessGlyphs(e){if(this.accessGlyphById.size)for(let[i,n]of this.accessGlyphById){let r=this.viewMode==="perspective"?this.perspectiveSeatScale.get(i)??1:1,o=this.seatR*1.5/ce*r,a=this.accessGlyphFilterEmphasized(i)?Or:Br,l=Math.max(o,a/(ce*Math.max(e,.001)));n.scale({x:l,y:l}),n.visible(this.accessGlyphShouldShow(i))}}accessGlyphFilterEmphasized(e){let i=this.seatById.get(e),n=this.accessFilter;return!!i&&n!==null&&!!i.accessibility?.includes("wheelchair")&&(n.length===0||n.includes("wheelchair"))&&tn(i,n)}accessGlyphShouldShow(e){return this.accessGlyphById.has(e)&&this.accessGlyphEligible(e)}accessGlyphEligible(e){let i=this.statusById.get(e)??"free";return!(i==="booked"||i==="held"&&!this.ownedHold.has(e)&&!this.opts.manageMode)}seatBaseColor(e){return this.colorblind?this.cbHueByKey.get(e)??ii[0]:this.catColor.get(e)??"#6e7bff"}seatLabelScale(e){return(e.labelStyle?.size??18)/18}seatPreferredLabelInk(e){return e.labelStyle?.color??this.theme.seatLabelColor??si}seatLabelInk(e,i){let n=i.fill();return J(typeof n=="string"?n:"",this.seatPreferredLabelInk(e),Vt)}paintSeat(e,i){let n=this.seatById.get(i),r=this.statusById.get(i)??"free",o=this.selection.has(i),s=this.seatBaseColor(n.categoryKey),a=this.boothLabelById.get(i);switch(e.dash([]),e.strokeWidth(0),e.stroke(""),e.opacity(1),r){case"free":e.fill(o&&this.effSelection===kt?we(s,.28):s);break;case"held":this.ownedHold.has(i)?(e.fill(we(s,this.effSelection===kt?.24:.1)),e.stroke(this.effSelection),e.strokeWidth(3)):e.fill(Kr);break;case"booked":this.colorblind?(e.fill("rgba(0,0,0,0)"),e.stroke(ti),e.strokeWidth(1.5),e.opacity(.9)):(e.fill(ti),e.opacity(.45));break;case"not_for_sale":e.fill(ti),e.stroke(Ur),e.strokeWidth(1),e.dash([2,2]);break}if(n.wheelchairSpaceType==="no-seat"&&r==="free"&&(e.stroke(Et(n.accessibility)),e.strokeWidth(o?3:2),e.dash([3,2])),a&&(a.text(r==="booked"?"SOLD":r==="held"?"HELD":n.label),a.fontSize(r==="free"?10:Math.min(10,Math.max(6,this.boothDims.get(n.rowId)?.width??40)/6)),a.fontStyle(r==="free"?"600":"800"),a.fill(r==="free"?this.theme.seatLabelColor??si:"#ffffff"),a.offsetX(a.width()/2),a.offsetY(a.height()/2)),this.accessFilter&&r==="free"&&!o&&!tn(n,this.accessFilter)&&e.opacity(.25),this.categoryHighlight&&r==="free"&&!o&&n.categoryKey!==this.categoryHighlight&&e.opacity(.25),this.categoryFilter&&r==="free"&&!o&&!this.categoryFilter.has(n.categoryKey)&&e.opacity(.22),this.commercialLimitedFilter&&r==="free"&&!o&&(n.commercial?.restrictedView||n.commercial?.obstructedView)&&e.opacity(.22),this.dimmedSections.size){let d=this.seatSection.get(i);(!d&&this.dimmedSections.has(He)||d&&(this.dimmedSections.has(d.id)||this.dimmedSections.has(d.logicalId)||d.zone!=null&&this.dimmedSections.has(d.zone)))&&e.opacity(.18)}this.closedSections.size&&this.seatInClosedSection(i)&&(e.fill(Xr),e.stroke(""),e.strokeWidth(0),e.dash([]),e.opacity(Yr)),this.selectionFocusId&&i!==this.selectionFocusId&&e.opacity(Math.min(e.opacity(),.16));let l=this.boothLabelById.get(i)??this.seatLabelById.get(i);l&&(l.fill(this.seatLabelInk(n,e)),l.visible(Ie(l.fontSize(),this.effScale())&&e.opacity()>=.5));let c=this.accessGlyphById.get(i);if(c){let d=e.fill();c.fill(Ui(typeof d=="string"?d:"")),c.opacity(e.opacity()),c.visible(this.accessGlyphShouldShow(i))}this.accessRingById.get(i)?.opacity(e.opacity())}seatInClosedSection(e){if(!this.closedSections.size)return!1;let i=this.seatSection.get(e);return!!i&&(this.closedSections.has(i.id)||this.closedSections.has(i.logicalId)||i.zone!=null&&this.closedSections.has(i.zone))}setColorblindSafe(e){if(e!==this.colorblind){this.colorblind=e;for(let i of this.seats){let n=this.circleById.get(i.id);n&&this.paintSeat(n,i.id)}this.updateLabels(),this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw()}}setDimmedSections(e){let i=new Set(e??[]);if(!(i.size===this.dimmedSections.size&&[...i].every(n=>this.dimmedSections.has(n)))){this.dimmedSections=i;for(let n of this.seats){let r=this.circleById.get(n.id);r&&this.paintSeat(r,n.id)}this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw()}}setClosedSections(e){let i=new Set(e??[]);i.size===this.closedSections.size&&[...i].every(n=>this.closedSections.has(n))||(this.closedSections=i,this.repaintSectionsAndSeats())}focusSection(e){this.sections.some(i=>i.id===e||i.logicalId===e)&&(this.focusedSectionId=e,this.drawFocusBackdrop(e),this.bgLayer.batchDraw(),this.overlayLayer.batchDraw(),this.updateLOD(),this.focusRegion(e))}releaseSectionFocusDim(){!this.focusBackdrop&&!this.focusDimOverlay||(this.focusBackdrop?.destroy(),this.focusBackdrop=null,this.focusDimOverlay?.destroy(),this.focusDimOverlay=null,this.bgLayer.batchDraw(),this.overlayLayer.batchDraw())}clearSectionFocus(){this.focusedSectionId&&(this.focusedSectionId=null,this.focusBackdrop&&(this.focusBackdrop.destroy(),this.focusBackdrop=null),this.focusDimOverlay?.destroy(),this.focusDimOverlay=null,this.bgLayer.batchDraw(),this.overlayLayer.batchDraw(),this.updateLOD())}getFocusedSection(){return this.focusedSectionId}drawFocusBackdrop(e){this.focusBackdrop&&(this.focusBackdrop.destroy(),this.focusBackdrop=null);let i=this.sections.filter(r=>r.id===e||r.logicalId===e);if(!i.length)return;let n=new Le.Group({listening:!1});for(let r of i){let o=this.viewMode==="perspective"&&r.perspectiveAffine,s=o?r.outline.map(l=>this.perspectiveLocalPoint(this.projectedSectionPoint(r,l))):r.outline,a=o?r.holes.map(l=>l.map(c=>this.perspectiveLocalPoint(this.projectedSectionPoint(r,c)))):r.holes;n.add(Je(s,a,{fill:qr,stroke:le("#ffffff",.1),strokeWidth:1,listening:!1},o?void 0:r.outlinePath))}this.bgLayer.add(n),n.moveToTop(),this.focusBackdrop=n,this.drawFocusDimOverlay(i)}drawFocusDimOverlay(e){this.focusDimOverlay?.destroy();let n=Math.max(this.bounds.width,this.bounds.height,1)*4+1e3,r=[{x:this.bounds.x-n,y:this.bounds.y-n},{x:this.bounds.x+this.bounds.width+n,y:this.bounds.y-n},{x:this.bounds.x+this.bounds.width+n,y:this.bounds.y+this.bounds.height+n},{x:this.bounds.x-n,y:this.bounds.y+this.bounds.height+n}],o=new Ko.Shape({fill:this.canvasBackground,opacity:1-St,listening:!1,perfectDrawEnabled:!1,sceneFunc:(s,a)=>{let l=c=>{if(c.length){s.moveTo(c[0].x,c[0].y);for(let d=1;d<c.length;d++)s.lineTo(c[d].x,c[d].y);s.closePath()}};s.beginPath(),l(r);for(let c of e){let d=this.viewMode==="perspective"&&c.perspectiveAffine?c.outline.map(h=>this.perspectiveLocalPoint(this.projectedSectionPoint(c,h))):c.outline.map(h=>{let u=c.liftWorld>0?this.isoLiftLocal(c.liftWorld):{x:0,y:0};return{x:h.x+u.x,y:h.y+u.y}});l(ht(d)>0?[...d].reverse():d)}s.fillStrokeShape(a)}});this.overlayLayer.add(o),o.moveToTop();for(let s of this.selectionMarkers.values())s.moveToTop();this.hoverRing.moveToTop(),this.focusRing.moveToTop(),this.focusDimOverlay=o}repaintSectionsAndSeats(){for(let e of this.seats){let i=this.circleById.get(e.id);i&&this.paintSeat(i,e.id)}for(let e of this.sections)e.blockPoly.fill(this.sectionBlockFill(e));this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw(),this.bgLayer.batchDraw()}getVisibleWorldRect(){let e=this.screenToWorld({x:0,y:0}),i=this.screenToWorld({x:this.stage.width(),y:this.stage.height()});return{x:Math.min(e.x,i.x),y:Math.min(e.y,i.y),width:Math.abs(i.x-e.x),height:Math.abs(i.y-e.y)}}getWorldBounds(){let e=1/0,i=1/0,n=-1/0,r=-1/0,o=(s,a)=>{s<e&&(e=s),a<i&&(i=a),s>n&&(n=s),a>r&&(r=a)};for(let s of this.seats)o(s.x,s.y);for(let s of this.sections)for(let a of s.outline)o(a.x,a.y);for(let s of this.gaById.values())for(let a of s.points)o(a.x,a.y);return Number.isFinite(e)?{x:e,y:i,width:Math.max(1,n-e),height:Math.max(1,r-i)}:{x:0,y:0,width:1,height:1}}getMinimapSnapshot(){let e=this.sections.map(i=>{let n=this.isSectionClosed(i)||i.free<=0,r=i.memberIds.some(s=>this.selection.has(s)),o=this.focusedSectionId===i.id||this.focusedSectionId===i.logicalId;return{id:i.logicalId,label:i.label,outline:i.outline.map(s=>({...s})),...this.objectFloor.get(i.id)?{floorId:this.objectFloor.get(i.id)}:{},state:r?"selected":n?"inactive":"available",active:o}});return{sections:e,seats:e.length?[]:this.seats.map(i=>({x:i.x,y:i.y,categoryKey:i.categoryKey,state:this.selection.has(i.id)?"selected":this.statusById.get(i.id)==="free"?"available":"inactive"}))}}panToWorld(e){this.cancelGlide();let i=this.worldToScreen(e);this.stage.position({x:this.stage.x()+this.stage.width()/2-i.x,y:this.stage.y()+this.stage.height()/2-i.y}),this.afterViewChange(),this.stage.batchDraw()}setCategoryHighlight(e){if(this.categoryHighlight!==e){this.categoryHighlight=e;for(let i of this.seats){let n=this.circleById.get(i.id);n&&this.paintSeat(n,i.id)}this.updateLabels(),this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw(),this.applyGAFilterState()}}renderBackground(e){let i=Xe(e);i&&this.renderBackgroundImage(i);for(let n of e.objects)n.type==="decorImage"&&this.renderDecorImage(n);for(let n of e.objects)n.type==="section"&&this.renderSection(n);this.renderZones(e);for(let n of e.objects)n.type==="shape"?this.renderShape(n):n.type==="gaArea"?this.renderGA(n):n.type==="table"?this.renderTable(n):n.type==="text"&&this.renderText(n)}trackAssetImage(e,i,n,r){let o=this.assetGeneration;/^https?:\/\//i.test(i)&&(e.crossOrigin="anonymous");let s=new Promise(a=>{let l=!1,c=()=>{l||(l=!0,this.assetCancels.delete(d),a())},d=()=>{e.onload=null,e.onerror=null;try{e.removeAttribute("src"),e.src=""}catch{}c()};this.assetCancels.add(d),e.onload=()=>{if(!this.exportMode){o===this.assetGeneration&&r(),c();return}(typeof e.decode=="function"?e.decode():Promise.resolve()).then(()=>{o===this.assetGeneration&&r()}).catch(()=>{o===this.assetGeneration&&this.assetErrors.push(`${n} could not be decoded.`)}).finally(c)},e.onerror=()=>{o===this.assetGeneration&&this.assetErrors.push(`${n} could not be loaded.`),c()},e.src=i});this.assetPromises.push(s)}cancelAssetLoads(){this.assetGeneration++;for(let e of[...this.assetCancels])e();this.assetCancels.clear(),this.assetPromises=[],this.assetErrors=[]}renderBackgroundImage(e){if(!e.url||e.visible===!1)return;let i=new window.Image;this.trackAssetImage(i,e.url,"Buyer background image",()=>{let n=i.naturalWidth||4,r=i.naturalHeight||3,o=e.crop??{x:0,y:0,width:1,height:1},s=Math.max(0,Math.min(.99,o.x)),a=Math.max(0,Math.min(.99,o.y)),l={x:s,y:a,width:Math.max(.01,Math.min(1-s,o.width)),height:Math.max(.01,Math.min(1-a,o.height))},c=e.width,d=c*(r*l.height/(n*l.width)),h=new Wo.Image({image:i,x:e.center.x,y:e.center.y,offsetX:c/2,offsetY:d/2,width:c,height:d,rotation:e.rotation??0,crop:{x:l.x*n,y:l.y*r,width:l.width*n,height:l.height*r},opacity:e.opacity,listening:!1});this.bgLayer.add(h),h.moveToBottom(),this.bgLayer.batchDraw()})}get objectDrawContext(){return{bgLayer:this.bgLayer,fgDecorGroup:this.fgDecorGroup,container:this.container,opts:this.opts,theme:this.theme,canvasBackground:this.canvasBackground,catColor:this.catColor,sections:this.sections,freeTextById:this.freeTextById,gaById:this.gaById,iconNodeById:this.iconNodeById,primaryFocalLabels:this.primaryFocalLabels,labelFont:()=>this.labelFont(),trackAssetImage:(e,i,n,r)=>this.trackAssetImage(e,i,n,r),isGhostClick:e=>this.isGhostClick(e)}}renderDecorImage(e){So(this.objectDrawContext,e)}renderTable(e){vo(this.objectDrawContext,e)}renderText(e){ko(this.objectDrawContext,e)}renderShape(e){xo(this.objectDrawContext,e)}renderGA(e){wo(this.objectDrawContext,e)}renderSection(e){let i=at(e.outline,e.holes),n=he(this.canvasBackground),r=[],o=new Map,s=0,a=U(e.outline),l=this.seatIndex?Kt(this.seatIndex,a).map(T=>this.seatById.get(T)).filter(T=>!!T):this.seats;for(let T of l)this.seatSection.has(T.id)||Y(T,e.outline,e.holes)&&(r.push(T.id),o.set(T.categoryKey,(o.get(T.categoryKey)??0)+1),(this.statusById.get(T.id)??"free")==="free"&&s++);let c=e.color??Wi([...o].map(([T,E])=>({hex:this.catColor.get(T)??"#6e7bff",w:E})),"#3a4358"),d=Wn(e.elevation),h=xe(e,{floorBaseHeightM:this.floorBaseHeightMFor(e.id)}),u=h.height*De,m=new Le.Group({listening:!1});this.bgLayer.add(m);let b=new Le.Group({listening:!1});m.add(b);let f=new vt({listening:!0});this.seatLayer.add(f);let p=[];if(u>0){let T=ge(this.zoneColor.get(e.zone??"")??c,.42);for(let E=0;E<e.outline.length;E++){let O=new et.Line({points:[],closed:!0,fill:T,stroke:le("#000000",.25),strokeWidth:1,opacity:0,listening:!1,perfectDrawEnabled:!1});p.push(O),m.add(O)}}b.moveToTop();let g=b,v=e.color??this.zoneColor.get(e.zone??"")??"#3a4358",y=Je(e.outline,e.holes,{stroke:le(v,.5),strokeWidth:1,fill:le(v,.08),listening:!1},e.outlinePath);g.add(y);let x=Je(e.outline,e.holes,{fill:n.sectionFill,stroke:n.sectionStroke,strokeWidth:Jt,opacity:0,listening:!1},e.outlinePath);g.add(x);let I=e.labelPresentation?.labelStyle,k=I?.color??n.sectionInk,w=(I?.size??18)/18,M=new Ce.Text({x:e.labelPresentation?.position?.x??i.x,y:e.labelPresentation?.position?.y??i.y,text:e.displayLabel??e.label,rotation:e.labelPresentation?.rotation??0,visible:e.labelPresentation?.visible!==!1,fontSize:22*w,fontStyle:"700",fontFamily:this.labelFont(),fill:J(n.sectionFill,k),listening:!1,perfectDrawEnabled:!1});M.offsetX(M.width()/2),M.offsetY(M.height()/2),g.add(M);let C=new Ce.Text({x:i.x,y:i.y,text:oe("map.seatsLeft",{count:s}),fontSize:12,fontStyle:"700",fontFamily:"JetBrains Mono, ui-monospace, monospace",fill:n.sectionInk,opacity:0,listening:!1,perfectDrawEnabled:!1});C.offsetX(C.width()/2),g.add(C);let L={id:e.id,logicalId:e.logicalSectionId??e.id,label:e.displayLabel??e.label,outline:e.outline,...e.outlinePath?{outlinePath:e.outlinePath}:{},holes:e.holes??[],centroid:i,labelAnchors:Zr(e.outline,e.holes??[],i),labelArea:Fn(e.outline,e.holes),zone:e.zone,memberIds:r,total:r.length,free:s,baseFill:c,outlineTint:v,outlinePoly:y,blockPoly:x,nameLabel:M,subLabel:C,preferredInk:k,labelScale:w,nameLabelFits:!0,subLabelFits:!0,elevation:d,liftWorld:u,rakeDeg:h.rake,surfaceFocal:r.length?{...this.seatById.get(r[0])?.focalPoint??this.isoCentre}:{...this.chartDoc?.focalPoint??this.isoCentre},frontDistanceWorld:0,rootGroupBg:m,bgZIndex:m.zIndex(),seatZIndex:f.zIndex(),liftGroupBg:b,liftGroupSeat:f,sideFaces:p},R=r.map(T=>this.seatById.get(T)).filter(T=>!!T),S=R.length?R:e.outline;L.frontDistanceWorld=Math.min(...S.map(T=>Math.hypot(T.x-L.surfaceFocal.x,T.y-L.surfaceFocal.y)));for(let T of r)this.seatSection.set(T,L);this.refreshSectionFill(L),this.refreshSectionHeat(L),this.sections.push(L)}refreshSectionHeat(e){Lo(this.sectionLodPaintContext,e)}refreshSectionFill(e){Co(this.sectionLodPaintContext,e)}isSectionClosed(e){return on(this.sectionLodPaintContext,e)}sectionAvailabilityState(e){return sn(this.sectionLodPaintContext,e)}sectionBlockFill(e){return Ze(he(this.canvasBackground),this.sectionAvailabilityState(e))}get sectionLodPaintContext(){return{sections:this.sections,zones:this.zones,sectionHeat:this.sectionHeat,closedSections:this.closedSections,canvasBackground:this.canvasBackground,bgLayer:this.bgLayer,seatLayer:this.seatLayer,stageScaleX:this.stage.scaleX(),stageWidth:this.stage.width(),floorOverview:this.floorOverview,focusedSectionId:this.focusedSectionId,hasFocusDimOverlay:!!this.focusDimOverlay,viewMode:this.viewMode,glideInProgress:this.glideInProgress,reducedMotion:this.reducedMotion,isoT:this.isoT,seatCount:this.seats.length,lodScale:this.lodScale,setLodScale:e=>{this.lodScale=e},worldToScreen:e=>this.worldToScreen(e)}}renderZones(e){if(!e.zones?.length||!this.sections.length)return;let i=new Map;for(let n of this.sections)n.zone&&(i.get(n.zone)??i.set(n.zone,[]).get(n.zone)).push(n);for(let n of e.zones){let r=i.get(n.id);if(!r||!r.length)continue;let o=r[0];for(let u of r)u.centroid.y<o.centroid.y&&(o=u);let s=o.centroid.x,a=o.centroid.y,l=1/0;for(let u of r)for(let m of u.memberIds){let b=this.seatById.get(m),f=b&&this.catPrice.get(b.categoryKey);typeof f=="number"&&f<l&&(l=f)}let c=new Ee.Rect({x:s,y:a,width:1,height:1,offsetX:.5,offsetY:.5,cornerRadius:1,fill:Ji,stroke:n.color??o.outlineTint,strokeWidth:1,opacity:0,listening:!1,perfectDrawEnabled:!1});this.bgLayer.add(c);let d=new Ce.Text({x:s,y:a,text:n.label.toUpperCase(),fontSize:ei,fontStyle:"800",letterSpacing:.5,fontFamily:this.labelFont(),fill:"#f4f6fb",opacity:0,listening:!1,perfectDrawEnabled:!1});d.offsetX(d.width()/2),d.offsetY(d.height()/2),this.bgLayer.add(d);let h=null;isFinite(l)&&(h=new Ce.Text({x:s,y:a,text:oe("map.fromPrice",{price:Yt(l,this.currency)}),fontSize:14,fontStyle:"600",fontFamily:"JetBrains Mono, ui-monospace, monospace",fill:"#cbd5e1",opacity:0,listening:!1,perfectDrawEnabled:!1}),h.offsetX(h.width()/2),this.bgLayer.add(h)),this.zones.push({id:n.id,anchor:{x:s,y:a},back:c,background:Ji,label:d,sub:h})}}screenToWorld(e){let i=this.stage.scaleX(),n={x:(e.x-this.stage.x())/i,y:(e.y-this.stage.y())/i};return this.viewMode==="perspective"&&this.perspectiveBaseInverse?re(this.perspectiveBaseInverse,n):this.isoT===0?n:this.isoInverse(n)}sectionAt(e){if(!this.sections.length)return null;let i=this.screenToWorld(e),n=this.sections.find(r=>{if(this.viewMode==="perspective"&&r.perspectiveAffine)return Y(i,r.outline.map(s=>this.perspectiveLocalPoint(this.projectedSectionPoint(r,s))),r.holes.map(s=>s.map(a=>this.perspectiveLocalPoint(this.projectedSectionPoint(r,a)))));let o=r.liftWorld>0?this.isoLiftLocal(r.liftWorld):{x:0,y:0};return Y({x:i.x-o.x,y:i.y-o.y},r.outline,r.holes)});return n?n.logicalId:null}sectionMembers(e){return[...new Set(this.sections.filter(i=>i.id===e||i.logicalId===e||i.zone===e).flatMap(i=>i.memberIds))]}isSelectable(e){return this.seatInClosedSection(e)?!1:(this.opts.selectableStatuses??["free"]).includes(this.statusById.get(e)??"free")}toggleSeat(e){if(this.selection.has(e)){this.setSelected(e,!1);let i=this.seatById.get(e);i&&this.opts.onDeselect?.(i)}else{if(!this.isSelectable(e))return;if(this.selection.size>=this.opts.maxSelection){this.opts.onSelectionLimit?.(this.opts.maxSelection);return}this.setSelected(e,!0);let i=this.seatById.get(e);i&&this.opts.onSelect?.(i)}this.overlayLayer.batchDraw()}resolveCanvasBackground(){let e=this.theme.background?ji(this.theme.background):null;if(e)return e;if(typeof getComputedStyle=="function"){let i=this.container;for(;i;){let n=ji(getComputedStyle(i).backgroundColor);if(n)return n;i=i.parentElement}}return nn}resolveSelectionColor(){return this.theme.selectionColor?this.theme.selectionColor:ut(this.canvasBackground)?lo:kt}setSelected(e,i,n=!1){let r=this.circleById.get(e);i?this.selection.add(e):(this.selectionFocusId===e&&this.setSelectionFocus(null),this.selection.delete(e)),this.syncSelectionMarker(e),r&&(this.paintSeat(r,e),!n&&!this.cached&&this.seatLayer.batchDraw())}syncSelectionMarker(e){if(this.selectionMarkers.get(e)?.destroy(),this.selectionMarkers.delete(e),!this.selection.has(e)&&!this.ownedHold.has(e))return;let i=this.seatById.get(e);if(!i)return;let n=this.selectionFocusId===e,r=this.boothDims.get(i.rowId),o=this.renderedSeatPoint(i),s=new Le.Group({name:"selection-ring",x:o.x,y:o.y,rotation:r?.rotation??0,listening:!1,perfectDrawEnabled:!1,opacity:this.selectionFocusId&&!n?.2:1});if(this.viewMode==="perspective"){let l=this.perspectiveSeatScale.get(e)??1;s.scale({x:l,y:l})}s.setAttr("seatId",e);let a={stroke:this.effSelection,listening:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1};if(r)if(s.add(new Ee.Rect({...a,width:r.width,height:r.height,offsetX:r.width/2,offsetY:r.height/2,cornerRadius:4,strokeWidth:n?4:3})),n)s.add(new Ee.Rect({...a,width:r.width+10,height:r.height+10,offsetX:(r.width+10)/2,offsetY:(r.height+10)/2,cornerRadius:7,strokeWidth:2,opacity:.55}));else{let l=Math.max(0,r.width/2-14),c=-Math.max(0,r.height/2-14);s.add(new ve.Circle({x:l,y:c,radius:10,fill:this.effSelection,listening:!1})),s.add(new et.Line({x:l,y:c,points:[-4.5,0,-1,3.5,5.5,-4.5],stroke:ut(this.effSelection)?"#0b1220":"#ffffff",strokeWidth:2.4,lineCap:"round",lineJoin:"round",listening:!1}))}else s.add(new ve.Circle({...a,radius:Math.max(1,this.seatR-1.25),strokeWidth:Math.min(2.5,Math.max(1.8,this.seatR*.22))})),n?s.add(new ve.Circle({...a,radius:this.seatR+2,strokeWidth:2,opacity:.55})):s.add(new et.Line({points:[-this.seatR*.52,0,-this.seatR*.12,this.seatR*.4,this.seatR*.6,-this.seatR*.46],stroke:"#ffffff",strokeWidth:Math.max(2.6,this.seatR*.34),lineCap:"round",lineJoin:"round",shadowColor:"#0b1220",shadowBlur:1.5,shadowOpacity:.55,listening:!1}));this.selectionMarkers.set(e,s),this.overlayLayer.add(s)}sectionBounds(e){let i=this.sections.filter(b=>b.id===e||b.logicalId===e),n=i.map(b=>{if(this.viewMode==="perspective"&&b.perspectiveAffine)return U(b.outline.map(g=>this.projectedSectionPoint(b,g)));let f=b.liftWorld>0?this.isoLiftLocal(b.liftWorld):{x:0,y:0},p=b.outline.map(g=>{let v={x:g.x+f.x,y:g.y+f.y};return this.isoT===0?v:this.isoForward(v)});return U(p)});if(!n.length)return null;let r=Math.min(...n.map(b=>b.x)),o=Math.min(...n.map(b=>b.y)),s=Math.max(...n.map(b=>b.x+b.width)),a=Math.max(...n.map(b=>b.y+b.height)),l=new Set(i.flatMap(b=>b.memberIds));for(let b of l){let f=this.seatById.get(b);if(!f)continue;let p=this.renderedSeatPoint(f);r=Math.min(r,p.x-this.seatR),o=Math.min(o,p.y-this.seatR),s=Math.max(s,p.x+this.seatR),a=Math.max(a,p.y+this.seatR)}let c=b=>{[b.x,b.y,b.width,b.height].every(Number.isFinite)&&(r=Math.min(r,b.x),o=Math.min(o,b.y),s=Math.max(s,b.x+b.width),a=Math.max(a,b.y+b.height))},d=b=>{let f={x:b.x+b.width/2,y:b.y+b.height/2};return i.some(p=>Y(f,p.outline,p.holes))};for(let{node:b,backdrop:f}of this.freeTextById.values()){let p=b.getClientRect({relativeTo:this.bgLayer,skipShadow:!0});d(p)&&(c(p),f&&c(f.getClientRect({relativeTo:this.bgLayer,skipShadow:!0})))}for(let{node:b}of this.iconNodeById.values()){let f=b.getClientRect({relativeTo:this.bgLayer,skipShadow:!0});d(f)&&c(f)}let h=new Qe;for(let{node:b}of this.freeTextById.values()){let f=b.getClientRect({relativeTo:this.bgLayer,skipShadow:!0,skipStroke:!0});h.insert({x:f.x-ee,y:f.y-ee,width:f.width+ee*2,height:f.height+ee*2})}for(let b of this.rowLabelPlan){let f=b.focusKeys?.some(y=>y===e||i.some(x=>y===x.id||y===x.logicalId||y===x.zone))??!1,p=new Ce.Text({text:b.text,fontSize:b.fontSize,fontStyle:"700",fontFamily:this.labelFont(),rotation:b.rotation,listening:!1});p.offsetX(p.width()/2),p.offsetY(p.height()/2);let g=this.resolveAutomaticRowLabelPosition(p,b,h),v=this.rowLabelBox(p,g);f&&c(v),h.insert(v),p.destroy()}let u=Math.max(s-r,a-o),m=Math.max(this.seatR*2,Math.min(24,u*.025));return{x:r-m,y:o-m,width:Math.max(1,s-r+m*2),height:Math.max(1,a-o+m*2)}}sectionFrameScale(e){let i=this.sectionBounds(e);if(!i)return this.stage.scaleX();let n=this.stage.width(),r=this.stage.height(),{min:o,max:s}=this.zoomBounds(),a=1.12;if(i.width<=0||i.height<=0)return this.stage.scaleX();let l=Math.min(n/(i.width*a),r/(i.height*a));return V(l,o,s)}handleSeatTap(e){if((this.stacked||this.floorOverview)&&this.opts.onDeckTap){let i=this.objectFloor.get(this.seatById.get(e)?.rowId??"");if(i){this.opts.onDeckTap(i);return}}if(this.effScale()<ue&&this.sections.length){let i=this.seatSection.get(e);if(i){let n=this.focusedSectionId===i.logicalId,r=this.sectionFrameScale(i.logicalId)>this.stage.scaleX()*1.02;if(!n&&r){this.opts.onSectionTap?this.opts.onSectionTap(i.logicalId):this.focusSection(i.logicalId);return}}}this.toggleSeat(e)}nearestSeatToScreen(e,i){let n=null,r=1/0,o=this.stage.scaleX()||1;for(let s of this.seats){if(!this.selection.has(s.id)&&!this.isSelectable(s.id))continue;let a=this.worldToScreen(s),l=this.viewMode==="perspective"?this.perspectiveSeatScale.get(s.id)??1:1,c=this.seatR*o*l+i,d=Math.hypot(a.x-e.x,a.y-e.y);d<=c&&d<r&&(r=d,n=s.id)}return n}wireInteraction(){this.seatLayer.on("click tap",e=>{if(this.moved>Re||this.isGhostClick(e))return;let i=cn(e.target);i&&this.handleSeatTap(i)}),this.seatLayer.on("mouseover",e=>{let i=cn(e.target);if(!i)return;let n=this.seatById.get(i);if(!n)return;this.hoveredId=i,this.hoverRing.position(this.renderedSeatPoint(n));let r=this.viewMode==="perspective"?this.perspectiveSeatScale.get(i)??1:1;this.hoverRing.scale({x:r,y:r}),this.hoverRing.visible(!0),this.overlayLayer.batchDraw(),this.container.style.cursor="pointer",this.opts.onHover?.(n)}),this.seatLayer.on("mouseout",()=>{this.hoveredId=null,this.hoverRing.visible(!1),this.overlayLayer.batchDraw(),this.container.style.cursor="default",this.opts.onHover?.(null)}),this.stage.on("wheel",e=>{e.evt.preventDefault(),this.releaseSectionFocusDim();let i=this.container.getBoundingClientRect(),n={x:e.evt.clientX-i.left,y:e.evt.clientY-i.top},r=Math.exp(-e.evt.deltaY*.002);this.zoomAbout(this.stage.scaleX()*V(r,.5,2),n)}),this.stage.on("click tap",e=>{if(this.moved>Re||this.isGhostClick(e))return;let i=this.stage.getPointerPosition();if(!i)return;if(!this.cached){if(cn(e.target))return;let r=this.nearestSeatToScreen(i,$t);r&&this.handleSeatTap(r);return}if((this.stacked||this.floorOverview)&&this.opts.onDeckTap){let r=this.floorOverview?this.sectionAt(i):null,o=(r?this.objectFloor.get(r):null)??this.deckFloorAt();if(o){this.opts.onDeckTap(o);return}}if(this.sections.length){let r=this.sectionAt(i);if(r){this.opts.onSectionTap?this.opts.onSectionTap(r):this.focusRegion(r);return}}let n=Math.max(Pe*1.2,this.stage.scaleX()*2.5);this.zoomAbout(n,i)})}deckFloorAt(){if(!this.objectFloor.size)return null;let e=this.stage.getPointerPosition();if(!e)return null;let i=this.screenToWorld(e),n=null,r=1/0;for(let o of this.seats){let s=this.renderedSeatPoint(o),a=s.x-i.x,l=s.y-i.y,c=a*a+l*l;c<r&&(r=c,n=o.rowId)}return n?this.objectFloor.get(n)??null:null}zoomBounds(){let e=.5*this.fitScale;return this.zones.length&&(e=Math.min(e,$e*.9)),{min:e,max:Math.max(10*this.fitScale,4)}}zoomAbout(e,i){let{min:n,max:r}=this.zoomBounds(),o=V(e,n,r),s=this.stage.scaleX();if(o===s)return;let a=(i.x-this.stage.x())/s,l=(i.y-this.stage.y())/s;this.stage.scale({x:o,y:o}),this.stage.position({x:i.x-a*o,y:i.y-l*o}),this.afterViewChange(),this.stage.batchDraw()}zoomToBounds(e,i){let n=this.stage.width(),r=this.stage.height(),{min:o,max:s}=this.zoomBounds(),a=1.12,l=Math.min(n/(e.width*a),r/(e.height*a)),c=V(Math.max(l,i??o),o,s);this.stage.scale({x:c,y:c}),this.stage.position({x:n/2-(e.x+e.width/2)*c,y:r/2-(e.y+e.height/2)*c}),this.afterViewChange(),this.stage.batchDraw()}focusRegion(e,i){let n=typeof e=="string"?this.sectionBounds(e):e;if(!n)return;if(this.cancelGlide(),i?.animate===!1||this.reducedMotion){this.zoomToBounds(n,i?.minScale);return}let r=this.stage.width(),o=this.stage.height(),{min:s,max:a}=this.zoomBounds(),l=1.12,c=Math.min(r/(n.width*l),o/(n.height*l)),d=V(Math.max(c,i?.minScale??s),s,a),h=r/2-(n.x+n.width/2)*d,u=o/2-(n.y+n.height/2)*d,m=this.stage.scaleX(),b=this.stage.x(),f=this.stage.y();if(Math.abs(d-m)<1e-4&&Math.abs(h-b)<.5&&Math.abs(u-f)<.5){this.afterViewChange();return}let p=performance.now(),g=Math.max(180,Math.min(1200,i?.durationMs??Qt));this.glideInProgress=!0;let v=y=>{if(this.destroyed){this.glideRaf=0,this.glideInProgress=!1;return}let x=Math.min(1,(y-p)/g),I=x<.5?4*x*x*x:1-Math.pow(-2*x+2,3)/2,k=m+(d-m)*I;this.stage.scale({x:k,y:k}),this.stage.position({x:b+(h-b)*I,y:f+(u-f)*I}),this.updateSeatGroupVisibility(),this.updateLOD(),this.scheduleViewChange(),this.stage.batchDraw(),x<1?this.glideRaf=requestAnimationFrame(v):(this.glideRaf=0,this.glideInProgress=!1,this.afterViewChange())};this.glideRaf=requestAnimationFrame(v)}cancelGlide(){this.glideRaf&&(cancelAnimationFrame(this.glideRaf),this.glideRaf=0),this.glideInProgress=!1}getRung(){let e=this.effScale();return e>=se?"seats":this.zones.length&&e<$e?"zones":"sections"}get renderedQualityContext(){return{stage:this.stage,overlayLayer:this.overlayLayer,labelGroup:this.labelGroup,viewMode:this.viewMode,cached:this.cached,effScale:()=>this.effScale(),getRung:()=>this.getRung(),worldToScreen:e=>this.worldToScreen(e),isoLiftLocal:e=>this.isoLiftLocal(e),seats:this.seats,sections:this.sections,zones:this.zones,seatSection:this.seatSection,statusById:this.statusById,selection:this.selection,circleById:this.circleById,seatLabelById:this.seatLabelById,boothLabelById:this.boothLabelById,accessGlyphById:this.accessGlyphById,freeTextById:this.freeTextById,gaById:this.gaById,perspectiveSeatProjected:this.perspectiveSeatProjected,perspectiveSeatScale:this.perspectiveSeatScale,seatR:this.seatR,canvasBackground:this.canvasBackground,effSelection:this.effSelection,categoryFilter:this.categoryFilter,focusedSectionId:this.focusedSectionId,focusBackdrop:this.focusBackdrop,isSelectable:e=>this.isSelectable(e),seatViewportCulled:e=>this.seatViewportCulled(e),focusedSeatOpacity:(e,i)=>this.focusedSeatOpacity(e,i),accessGlyphFilterEmphasized:e=>this.accessGlyphFilterEmphasized(e),seatLabelScale:e=>this.seatLabelScale(e),seatLabelInk:(e,i)=>this.seatLabelInk(e,i),seatPreferredLabelInk:e=>this.seatPreferredLabelInk(e)}}getRenderedQualityEvidence(){return to(this.renderedQualityContext)}setRung(e){if(e==="zones"){this.cancelGlide(),this.zoomToFit();return}let i=e==="sections"?(Te+se)/2:Math.max(this.seatLabelTargetScale()*1.05,Fr,se*1.3),n=this.stage.width(),r=this.stage.height(),o=this.getVisibleWorldRect(),s={x:o.x+o.width/2,y:o.y+o.height/2},a=s.x,l=s.y;if(e==="sections"&&this.sections.length>0){let u=this.sections.map(p=>{let g=U(p.outline);return{x:g.x+g.width/2,y:g.y+g.height/2}}),m=n/(i*2),b=r/(i*2);if(!u.some(p=>Math.abs(p.x-s.x)<=m&&Math.abs(p.y-s.y)<=b)){let p=u.reduce((g,v)=>{let y=(v.x-s.x)**2+(v.y-s.y)**2;return y<g.distance?{point:v,distance:y}:g},{point:u[0],distance:1/0});a=p.point.x,l=p.point.y}}let c=e==="seats"?this.seats.filter(u=>u.kind!=="booth"):[];if(c.length>0){let u=c[0],m=1/0;for(let b of c){let f=b.x-s.x,p=b.y-s.y,g=f*f+p*p;g<m&&(u=b,m=g)}a=u.x,l=u.y}let d=n/(i*1.12),h=r/(i*1.12);this.focusRegion({x:a-d/2,y:l-h/2,width:d,height:h})}seatLabelTargetScale(){let e=Ve,i=new Ce.Text({fontSize:ye,fontStyle:"600",fontFamily:this.labelFont(),listening:!1}),n=this.seatR*2-3;for(let r of this.seats){if(r.kind==="booth"){e=Math.min(e,Ve);continue}let o=ye*this.seatLabelScale(r);i.fontSize(o),i.text(Ht(r.displayLabel??r.label));let s=i.width()>n?Math.max(bt,o*n/i.width()):o;e=Math.min(e,s)}return i.destroy(),Q/Math.max(bt,e)}afterViewChange(){this.updateSeatGroupVisibility(),this.updateLOD(),this.updateFreeTextVisibility(),this.updateLabels(),this.scheduleViewChange()}scheduleViewChange(){this.exportMode||this.viewChangeRaf||(this.viewChangeRaf=requestAnimationFrame(()=>{this.viewChangeRaf=0,this.opts.onViewChange?.()}))}sizeLabel(e,i,n){e.fontSize(Math.max(1,i)),e.offsetX(e.width()/2),e.offsetY(e.height()/2),e.y(n)}updateLOD(){let e=this.exportMode?Math.max(this.effScale(),qe+.01,ue):this.effScale(),i=Math.max(e,1e-4);for(let[o,s]of this.primaryFocalLabels)this.sizeLabel(o,s/i,o.y());this.hasSections?Mo(this.sectionLodPaintContext,e):this.primaryFocalLabels.size&&this.bgLayer.batchDraw(),this.paintGAStateForView(),this.updateAccessGlyphs(e);let n=!this.exportMode&&e<se;if(this.viewMode==="perspective"&&this.hasSections&&this.seats.length>2500&&n){this.seatLayer.listening(!1);return}n&&!this.cached?this.cacheSeatLayer():!n&&(this.cached||!this.seatLayer.listening())&&(this.cached&&this.releaseSeatLayerBitmap(),this.seatLayer.listening(!this.exportMode),this.cached=!1,this.seatLayer.batchDraw())}rebuildSeatCache(){this.updateSeatGroupVisibility();let e=V(this.stage.scaleX()*this.dpr,.15,2);this.seatLayer.clearCache(),this.seatLayer.cache({pixelRatio:e}),this.seatLayer.listening(!1),this.cached=!0}cacheSeatLayer(){this.rebuildSeatCache(),this.seatLayer.batchDraw()}releaseSeatLayerBitmap(){let e=this.seatLayer,i=e._cache.get("canvas");i&&(Tt.Konva.Util.releaseCanvas(i.scene._canvas,i.filter._canvas,i.hit._canvas),e._cache.delete("canvas"))}forceDraw(){this.recacheTimer&&(clearTimeout(this.recacheTimer),this.recacheTimer=null,this.effScale()<se?this.rebuildSeatCache():this.cached&&(this.releaseSeatLayerBitmap(),this.seatLayer.listening(!0),this.cached=!1)),this.bgLayer.draw(),this.seatLayer.draw(),this.overlayLayer.draw()}async ready(){let e=this.assetGeneration,i=typeof document<"u"&&"fonts"in document?document.fonts:null;if(await Promise.all([...this.assetPromises.slice(),...i?[i.ready.then(()=>{}),i.load("700 24px Inter").then(()=>{}),i.load('600 12px "JetBrains Mono"').then(()=>{})]:[]]),e!==this.assetGeneration)throw new Error("The chart changed while its export assets were loading.");if(this.assetErrors.length)throw new Error(`Export stopped because ${this.assetErrors.join(" ")}`);this.exportMode&&(this.fitExportContent(),this.forceDraw())}exportSceneBounds(){let e=[this.bgLayer,this.seatLayer,this.overlayLayer].map(s=>s.getClientRect({relativeTo:this.stage})).filter(s=>s.width>0&&s.height>0);if(!e.length)return this.bounds;let i=Math.min(...e.map(s=>s.x)),n=Math.min(...e.map(s=>s.y)),r=Math.max(...e.map(s=>s.x+s.width)),o=Math.max(...e.map(s=>s.y+s.height));return{x:i,y:n,width:Math.max(1,r-i),height:Math.max(1,o-n)}}fitExportContent(){if(!this.exportMode)return;let e=this.stage.width(),i=this.stage.height(),n=Math.max(12,Math.min(36,Math.min(e,i)*.025)),r=()=>{let o=this.exportSceneBounds(),s=Math.max(1,e-n*2),a=Math.max(1,i-n*2),l=Math.min(s/o.width,a/o.height)||1;this.fitScale=l,this.stage.scale({x:l,y:l}),this.stage.position({x:(e-o.width*l)/2-o.x*l,y:(i-o.height*l)/2-o.y*l}),this.afterViewChange()};r(),r()}captureCanvas(){if(!this.exportMode)throw new Error("captureCanvas() is available only on a renderer created with exportMode.");this.forceDraw();let e;try{e=this.stage.toCanvas({pixelRatio:1,imageSmoothingEnabled:!0})}catch(r){let o=r instanceof Error?r.message:String(r);throw new Error(`The chart canvas could not be captured. A buyer-visible image may block export. ${o}`)}let i=document.createElement("canvas");i.width=this.stage.width(),i.height=this.stage.height();let n=i.getContext("2d");if(!n)throw new Error("Canvas 2D is unavailable; this browser cannot create an export.");n.fillStyle=this.canvasBackground,n.fillRect(0,0,i.width,i.height);try{n.drawImage(e,0,0)}finally{e.width=1,e.height=1}return i}updateFreeTextVisibility(){let e=this.exportMode?Math.max(this.effScale(),ue):this.effScale();for(let{objectId:i,node:n,backdrop:r,categoryKey:o,kind:s}of this.freeTextById.values()){let a=o!=null&&(s==="ga-label"||s==="ga-capacity")&&this.gaCategoryDimmed(o),l=i!=null&&(s==="ga-label"||s==="ga-capacity")&&this.gaById.get(i)?.sectionId!=null&&e<se,c=s==="free-text"&&this.nodeBelongsToFocusedSection(n),d=!a&&!l&&(c||Ie(n.fontSize(),e));n.visible(d),r?.visible(d)}for(let{node:i,fontSize:n}of this.iconNodeById.values())i.visible(this.nodeBelongsToFocusedSection(i)||Ie(n,e))}nodeBelongsToFocusedSection(e){let i=this.focusedSectionId;if(!i)return!1;let n=this.sections.filter(s=>s.id===i||s.logicalId===i||s.zone===i);if(!n.length)return!1;let r=e.getClientRect({relativeTo:this.bgLayer,skipShadow:!0}),o={x:r.x+r.width/2,y:r.y+r.height/2};return n.some(s=>Y(o,s.outline,s.holes))}buildRowLabelPlan(e){this.rowLabelPlan=Io(e,{theme:this.theme,seats:this.seats,seatSection:this.seatSection,seatR:this.seatR,objectFilteredOut:i=>this.objectFilteredOut(i)})}rowLabelBox(e,i,n=ee){return rn(e,i,n)}resolveAutomaticRowLabelPosition(e,i,n){return To(e,i,n,this.seatIndex)}objectFilteredOut(e){let i=e.categoryKey;return i?!!(this.categoryHighlight&&i!==this.categoryHighlight||this.categoryFilter&&!this.categoryFilter.has(i)):!1}updateLabels(){Eo(this.viewportLabelContext)}get viewportLabelContext(){return{exportMode:this.exportMode,effScale:()=>this.effScale(),boothLabelById:this.boothLabelById,circleById:this.circleById,focusedSeatOpacity:(e,i)=>this.focusedSeatOpacity(e,i),labelGroup:this.labelGroup,labelLiftGroups:this.labelLiftGroups,seatLabelById:this.seatLabelById,visibleSeatCandidates:()=>this.visibleSeatCandidates(),worldToScreen:e=>this.worldToScreen(e),stage:this.stage,accessGlyphById:this.accessGlyphById,accessGlyphShouldShow:e=>this.accessGlyphShouldShow(e),statusById:this.statusById,renderedSeatPoint:e=>this.renderedSeatPoint(e),viewMode:this.viewMode,perspectiveSeatScale:this.perspectiveSeatScale,ownedHold:this.ownedHold,opts:this.opts,seatLabelContainer:e=>this.seatLabelContainer(e),seatLabelScale:e=>this.seatLabelScale(e),labelFont:()=>this.labelFont(),seatLabelInk:(e,i)=>this.seatLabelInk(e,i),seatPreferredLabelInk:e=>this.seatPreferredLabelInk(e),seatR:this.seatR,freeTextById:this.freeTextById,bgLayer:this.bgLayer,rowLabelPlan:this.rowLabelPlan,focusedSectionId:this.focusedSectionId,resolveAutomaticRowLabelPosition:(e,i,n)=>this.resolveAutomaticRowLabelPosition(e,i,n),rowLabelBox:(e,i)=>this.rowLabelBox(e,i),isoT:this.isoT,applyUprightLabels:()=>this.applyUprightLabels(),overlayLayer:this.overlayLayer}}handleResize(){let e=this.container.clientWidth||1,i=this.container.clientHeight||1;e===this.stage.width()&&i===this.stage.height()||(this.stage.size({width:e,height:i}),this.refitCurrentView())}startFpsLoop(){let e=i=>{this.lastFpsAt||(this.lastFpsAt=i),this.frames++;let n=i-this.lastFpsAt;n>=1e3&&(this.opts.onFps?.(Math.round(this.frames*1e3/n)),this.frames=0,this.lastFpsAt=i),this.rafId=requestAnimationFrame(e)};this.rafId=requestAnimationFrame(e)}};Lt.ZOOM_STEP=1.4;var di=Lt;function dn(t,e){return new di(t,e)}function tt(t){let e=Number(t.slice(t.lastIndexOf(":")+1));return Number.isFinite(e)?e:-1}function un(t,e,i){let n=new Map;for(let s of t){if(s.kind==="booth")continue;let a=n.get(s.rowId);a?a.push(s):n.set(s.rowId,[s])}let r=s=>i.has(s.id)||e(s.id)!=="free",o=[];for(let s of n.values())if(!(s.length<3)){s.sort((a,l)=>tt(a.id)-tt(l.id));for(let a=1;a<s.length-1;a++){let l=s[a];if(r(l))continue;let c=s[a-1],d=s[a+1];tt(l.id)-tt(c.id)!==1||tt(d.id)-tt(l.id)!==1||!r(c)||!r(d)||!i.has(c.id)&&!i.has(d.id)||o.push(l)}}return o}function Uo(t,e={}){let{baseMs:i=1e3,factor:n=2,maxMs:r=1/0,jitter:o=0,random:s=Math.random}=e,a=Math.min(i*n**Math.max(0,t),r);if(o<=0)return a;let l=Math.min(1,o);return a*(1-l+l*s())}function hn(t,e){if(Number.isInteger(t.logicalSeatIndex))return t.logicalSeatIndex;let i=t.id.lastIndexOf(":");if(i<0)return e;let n=Number(t.id.slice(i+1));return Number.isFinite(n)?n:e}function Xo(t,e){let i=t.x-e.x,n=t.y-e.y;return i*i+n*n}function nl(t){let e=0,i=0;for(let n of t)e+=n.x,i+=n.y;return{x:e/t.length,y:i/t.length}}function rl(t,e){return t.find(i=>i.focalPoint)?.focalPoint??e}function pn(t){return t.commercial?.premium===!0}function Yo(t,e,i){let n=Math.floor(i.qty);if(!Number.isFinite(n)||n<=0)return{labels:[],reason:"sold_out"};let{categoryKey:r,zoneId:o,focal:s,preferPremium:a}=i,l=new Map,c=[];if(t.forEach((m,b)=>{let f=e.has(m.label)&&(!r||m.categoryKey===r)&&(!o||m.zoneId===o),p=m.logicalRowId??m.rowId,g=l.get(p);g||(g=[],l.set(p,g)),g.push({seat:m,index:hn(m,b),elig:f}),f&&c.push(m)}),c.length===0)return{labels:[],reason:"sold_out"};let d=null,h=m=>{if(!d)return!0;if(a&&m.nonPremium!==d.nonPremium)return m.nonPremium<d.nonPremium;if(m.orphan!==d.orphan)return m.orphan<d.orphan;if(m.d2!==d.d2)return m.d2<d.d2;let b=m.rowId.localeCompare(d.rowId);return b!==0?b<0:m.startIndex<d.startIndex};for(let[m,b]of l){let f=[...b].sort((g,v)=>g.index-v.index),p=0;for(;p<f.length;){if(!f[p].elig){p++;continue}let g=p;for(;g<f.length&&f[g].elig&&(g===p||f[g].index===f[g-1].index+1);)g++;let v=g-p;for(let y=0;y+n<=v;y++){let x=y,I=v-(y+n),k=x===1||I===1?1:0,w=f.slice(p+y,p+y+n).map(C=>C.seat),M={labels:w.map(C=>C.label),seats:w,rowId:m,startIndex:f[p+y].index,orphan:k,nonPremium:a?w.reduce((C,L)=>C+(pn(L)?0:1),0):0,d2:Xo(nl(w),rl(w,s))};h(M)&&(d=M)}p=g}}return d?{labels:d.labels}:c.length<n?{labels:[],reason:"not_enough_together"}:{labels:c.map((m,b)=>({seat:m,i:b,d2:Xo(m,m.focalPoint??s)})).sort((m,b)=>{if(a){let p=pn(m.seat)?0:1,g=pn(b.seat)?0:1;if(p!==g)return p-g}if(m.d2!==b.d2)return m.d2-b.d2;let f=(m.seat.logicalRowId??m.seat.rowId).localeCompare(b.seat.logicalRowId??b.seat.rowId);return f!==0?f:hn(m.seat,m.i)-hn(b.seat,b.i)}).slice(0,n).map(m=>m.seat.label)}}function ui(t){return{code:"ticket_option_not_applicable",labels:t,message:"That ticket choice is not available for the selected seat."}}function fn(t,e){let i=t.applicability;return i?!(i.seatLabels?.length&&!i.seatLabels.includes(e.label)||i.accessibility?.length&&!i.accessibility.some(n=>e.accessibility?.includes(n))):!0}function $o(t,e){return(t.categories.find(i=>i.key===e.categoryKey)?.tiers??[]).filter(i=>fn(i,e))}function it(t,e,i){let n=t.categories.find(o=>o.key===e.categoryKey)?.tiers;if(!n?.length)return{kind:"none"};let r=i==null?n.find(o=>fn(o,e)):n.find(o=>o.id===i&&fn(o,e));return r?{kind:"resolved",tier:r}:{kind:"invalid"}}function ol(t,e){return(t.logicalRowId??t.rowId)===(e.logicalRowId??e.rowId)}function qo(t){if(Number.isInteger(t.logicalSeatIndex))return t.logicalSeatIndex;let e=t.id.slice(t.id.lastIndexOf(":")+1),i=Number(e);return Number.isInteger(i)?i:void 0}function sl(t,e){if(!ol(t,e))return!1;let i=qo(t),n=qo(e);return i!=null&&n!=null&&Math.abs(i-n)===1}function al(t,e){if(!e.length)return null;let i=new Map(be(t,{resolveEyeHeights:!1}).map(s=>[s.label,s])),n=e.flatMap(s=>{let a=i.get(s.label);return a?[{selection:s,seat:a}]:[]}),r=n.map(({seat:s})=>s).filter(s=>s.accessibility?.includes("wheelchair")),o=[];for(let{selection:s,seat:a}of n){let l=it(t,a,s.tierId),c=l.kind==="resolved"?l.tier:void 0;(a.accessibility?.includes("companion")||c?.restriction==="companion")&&!r.some(h=>h.id!==a.id&&sl(a,h))&&o.push(a.label)}return o.length?{code:"companion_pair_required",labels:o,message:"Select the adjacent wheelchair place with each companion ticket."}:null}function Zo(t,e){if(!e.length)return null;let i=new Map(be(t,{resolveEyeHeights:!1}).map(s=>[s.label,s])),n=new Set(t.categories.filter(s=>s.notForSale).map(s=>s.key)),r=[],o=[];for(let s of e){let a=i.get(s.label);if(!a)continue;if(n.has(a.categoryKey)){r.push(a.label);continue}it(t,a,s.tierId).kind==="invalid"&&o.push(a.label)}return r.length?{code:"not_for_sale",labels:r,message:"These seats are not for sale."}:o.length?ui(o):al(t,e)}var Ct=class extends Error{constructor(i,n){super(n);this.objectId=i;this.name="GroupedTableProjectionError"}};function ll(t){let e=t.minOccupancy,i=t.maxOccupancy;if(!Number.isInteger(e)||!Number.isInteger(i)||e<1||i<e||i>t.seatCount)throw new Ct(t.id,`Table "${t.label}" has invalid variable-occupancy bounds`);return{min:e,max:i}}function Qo(t,e){if(e!==2)return[];let i=[];for(let n of ae(t)){if(n.type!=="table"||!n.bookAsWhole&&!n.variableOccupancy)continue;if(n.bookAsWhole&&n.variableOccupancy)throw new Ct(n.id,`Table "${n.label}" cannot be whole-table and variable-occupancy inventory`);if(!Number.isInteger(n.seatCount)||n.seatCount<1||!n.label.trim())throw new Ct(n.id,"Grouped tables require a label and at least one chair");let r=n.variableOccupancy?"variable":"whole",o=r==="variable"?ll(n):{min:n.seatCount,max:n.seatCount};i.push({objectId:n.id,label:n.label,...n.displayLabel?{displayLabel:n.displayLabel}:{},...n.displayType?{displayType:n.displayType}:{},categoryKey:n.categoryKey,mode:r,capacity:n.seatCount,minOccupancy:o.min,maxOccupancy:o.max,chairs:ze(n)})}return i}var ke=class extends Error{constructor(i){super(i.message);this.status=422;this.name="PickerSelectionError",this.reason=i.code,this.labels=i.labels}};function Jo(t){if(t!=null&&(!Number.isInteger(t)||t<1))throw new Error("picker: `numberOfPlacesToSelect` must be a positive integer");return t??null}function es(t,e,i,n){if(i!=null&&!Array.isArray(i))throw new TypeError("picker: `selectionValidators` must be an array");let r=[],o=0,s=!1,a=!1;for(let c of i??[])if(c?.type==="minimumSelectedPlaces"){if(!Number.isInteger(c.minimum)||Number(c.minimum)<1)throw new TypeError("picker: `minimumSelectedPlaces.minimum` must be a positive integer");o=Math.max(o,Number(c.minimum))}else if(c?.type==="consecutiveSeats")s=!0;else if(c?.type==="noOrphanSeats")a=!0;else throw new TypeError(`picker: unsupported selection validator "${String(c?.type??"")}"`);if(o&&r.push({type:"minimumSelectedPlaces",minimum:o}),s&&r.push({type:"consecutiveSeats"}),a&&r.push({type:"noOrphanSeats"}),t!=null&&o>t)throw new Error("picker: `minimumSelectedPlaces.minimum` cannot exceed `numberOfPlacesToSelect`");let l=Math.max(0,Math.floor(e??t??Math.max(n,o)));if(t!=null&&l<t)throw new Error("picker: `maxSelection` cannot be lower than `numberOfPlacesToSelect`");if(e!=null&&l<o)throw new Error("picker: `maxSelection` cannot be lower than `minimumSelectedPlaces.minimum`");return{validators:r,maxSelection:t??l}}function cl(t){let e=Number(t.slice(t.lastIndexOf(":")+1));return Number.isInteger(e)?e:-1}function dl(t){if(t.length<=1)return!1;let e=t[0]?.objectId,i=t[0]?.categoryKey;if(!e||t.some(r=>r.objectId!==e||r.categoryKey!==i))return!0;let n=t.map(r=>cl(r.id)).sort((r,o)=>r-o);return n.some((r,o)=>r<0||o>0&&r!==n[o-1]+1)}function ts(t,e,i,n,r){let o=n.find(l=>l.type==="minimumSelectedPlaces")?.minimum??0,s=i??o,a=[];return i!=null&&e!==i&&a.push("numberOfPlacesToSelect"),o&&e<o&&a.push("minimumSelectedPlaces"),n.some(l=>l.type==="consecutiveSeats")&&dl(t)&&a.push("consecutiveSeats"),n.some(l=>l.type==="noOrphanSeats")&&r()&&a.push("noOrphanSeats"),{isValid:a.length===0,count:e,required:s,remaining:Math.max(0,s-e),seats:t,violations:a}}var ul=10,hl=15e3,is=["background","rowLabelColor","textColor","selectionColor"];function pl(t,e){return!t||!e?!t&&!e:is.every(i=>t[i]===e[i])}function hi(t){let e=t??{};return{status:e.status,conflicts:e.conflicts,reason:e.reason}}function mn(t){return t==="blocked"?"not_for_sale":t==="held"||t==="booked"||t==="free"||t==="not_for_sale"?t:"free"}var bn=class{constructor(e){this.selectableSeatIds=null;this.lastSelectionValidity=null;this.renderer=null;this._doc=null;this.hidden=new Set;this.mapTheme=null;this.closedSections=new Set;this.labelToId=new Map;this.labelToSeat=new Map;this.seatTiers=new Map;this.seatById=new Map;this.seatContext=new Map;this.allIds=[];this.groupedTablesByObject=new Map;this.groupedTablesByLabel=new Map;this.groupedTableBySeatId=new Map;this.tableQuantities=new Map;this.confirmedVariableTables=new Set;this.groupedSelectionOverhead=0;this.ws=null;this.realtime=null;this.reconnectTimer=null;this.attempt=0;this.closed=!1;this.onVisibilityChange=null;this.hold_=null;this.liveStatuses=new Map;this.liveDefault="free";this.currency="USD";this.expiryTimer=null;this.hintShown=!1;this.opts=e,this.api=e.transport,this.key=e.eventKey,this.numberOfPlacesToSelect=Jo(e.numberOfPlacesToSelect);let i=es(this.numberOfPlacesToSelect,e.maxSelection,e.selectionValidators,ul);this.selectionValidators=i.validators,this.maxSelection=i.maxSelection,this.selectableObjectRefs=e.selectableObjects==null?null:[...new Set(e.selectableObjects.filter(n=>typeof n=="string"&&!!n))],this.mapTheme=e.mapTheme??null}get doc(){return this._doc}visibleDoc(){if(!this._doc)return{objects:[]};let e=Gi(this._doc,this.hidden);if(!this.mapTheme)return e;let i={...e.theme??{}};for(let n of is){let r=this.mapTheme[n];r&&(i[n]=r)}return{...e,theme:i}}setMapTheme(e){if(pl(this.mapTheme,e??null))return!1;this.mapTheme=e??null;let i=this.renderer;if(!i)return!0;let n=i.getSelection().map(s=>s.id),r=this.getActiveFloorId(),o=i.isFloorOverview?.()??!1;return i.setChart(this.visibleDoc(),r?{floorId:r}:void 0),o&&i.setFloorOverview?.(!0),this.opts.colorblindSafe&&i.setColorblindSafe?.(!0),this.closedSections.size&&i.setClosedSections?.([...this.closedSections]),this.applySeatsMap(Object.fromEntries(this.liveStatuses),this.liveDefault),n.length&&i.select?.(n),!0}syncHidden(e){let i=e.filter(r=>typeof r=="string");if(i.length===this.hidden.size&&i.every(r=>this.hidden.has(r)))return!1;this.hidden=new Set(i);let n=this.renderer?.isFloorOverview?.()??!1;return this.renderer?.setChart(this.visibleDoc()),n&&this.renderer?.setFloorOverview?.(!0),!0}syncClosed(e){let i=(e??[]).filter(n=>typeof n=="string");return i.length===this.closedSections.size&&i.every(n=>this.closedSections.has(n))?!1:(this.closedSections=new Set(i),this.renderer?.setClosedSections?.(i),!0)}isSectionClosed(e){return this.closedSections.has(e)}currentHold(){return this.hold_}getRenderer(){return this.renderer}seatByLabel(e){return this.labelToSeat.get(e)}idForLabel(e){return this.labelToId.get(e)}idsForLabel(e){let i=this.groupedTablesByLabel.get(e);if(i)return i.chairs.map(r=>r.id);let n=this.labelToId.get(e);return n?[n]:[]}idsForLabels(e){return[...new Set([...e].flatMap(i=>this.idsForLabel(i)))]}tableSelection(e){let i=this.groupedTableBySeatId.get(e)??this.groupedTablesByLabel.get(e);return i?this.toTableSeat(i):null}lineItemDisplay(e){if(e.objectType==="ga"){let r=this.visibleDoc(),o=lt(r).find(s=>s.id===e.objectId);return{...o?.displayLabel?{displayLabel:o.displayLabel}:{},...o?.displayType?{displayType:o.displayType}:{}}}if(e.objectType==="table"){let r=this.groupedTablesByLabel.get(e.label);return{...r?.displayLabel&&r.displayLabel!==r.label?{displayLabel:r.displayLabel}:{},...r?.displayType?{displayType:r.displayType}:{}}}let i=this.labelToSeat.get(e.label),n=i?this.seatContext.get(i.id):void 0;return{...i?.displayLabel?{displayLabel:i.displayLabel}:{},...n?.displayType?{displayType:n.displayType}:{}}}async render(e){if(this.renderer)return null;let i=performance.now(),n={},r=k=>Math.round((performance.now()-k)*100)/100;this.closed=!1;let o,s=performance.now();try{o=await this.api.chart(this.key)}catch(k){return this.emitError(k),null}if(n.loadChart=r(s),this.closed)return null;this._doc=o.doc;let a=performance.now();try{let k=Qo(o.doc,o.event.inventoryModelVersion===2?2:1);this.groupedTablesByObject=new Map(k.map(w=>[w.objectId,w])),this.groupedTablesByLabel=new Map(k.map(w=>[w.label,w])),this.groupedTableBySeatId=new Map(k.flatMap(w=>w.chairs.map(M=>[M.id,w]))),this.tableQuantities=new Map(k.map(w=>[w.label,w.mode==="whole"?w.capacity:w.minOccupancy])),this.confirmedVariableTables=new Set,this.groupedSelectionOverhead=k.reduce((w,M)=>w+Math.max(0,M.chairs.length-1),0)}catch(k){return this.emitError(k),null}this.labelToId=new Map,this.labelToSeat=new Map,this.seatById=new Map,this.seatContext=new Map,this.allIds=[];let l=new Map(ae(o.doc).map(k=>[k.id,k])),c=ct(o.doc),d=new Map([...c.sections,...c.ungrouped?[c.ungrouped]:[]].map(k=>[k.id,k.label]));for(let k of be(o.doc)){this.labelToId.set(k.label,k.id),this.labelToSeat.set(k.label,k),this.seatById.set(k.id,k),this.allIds.push(k.id);let w=l.get(k.rowId),M=w&&"label"in w&&typeof w.label=="string"?w.label:void 0,C=w?.type==="row"?w.segmentedRow:void 0,L=C?.displayLabel??(w&&"displayLabel"in w&&typeof w.displayLabel=="string"&&w.displayLabel?w.displayLabel:M),R=this.groupedTablesByObject.get(k.rowId),S=w?.type==="table"?"table":w?.type==="booth"?"booth":"seat",T=L,E=C?.displayType?.trim()||(w&&"displayType"in w&&typeof w.displayType=="string"&&w.displayType.trim()?w.displayType.trim():void 0),O=k.displayLabel??k.label,F=O.split("-"),j=R||k.kind==="booth"?void 0:L&&O.startsWith(`${L}-`)?O.slice(L.length+1):F[F.length-1]??O;this.seatContext.set(k.id,{objectId:k.rowId,objectType:S,sectionLabel:d.get(c.objectToSection.get(k.rowId)??""),rowLabel:T,seatNumber:j,...E?{displayType:E,rowType:E}:{}})}for(let k of this.groupedTablesByLabel.values()){let w=k.chairs[0];w&&(this.labelToId.set(k.label,w.id),this.labelToSeat.set(k.label,w))}n.normalizeBuyerModel=r(a);let h=o.event.currency??this.opts.currency;this.currency=h??"USD";let u=performance.now(),m=dn(e,{maxSelection:this.rendererSelectionCap(),confirmSelection:this.opts.confirmSelection,portraitFitCrop:!0,currency:h,onSelect:k=>{this.handleRendererSelect(k)},onDeselect:k=>{this.handleRendererDeselect(k)},onSelectionLimit:this.opts.onSelectionLimit,onHover:k=>{this.opts.onHover?.(k),this.opts.onSeatHover&&this.opts.onSeatHover(k?this.describeSeat(k):null)},onFocusSeat:this.opts.onFocusSeat,onViewChange:this.opts.onViewChange,onGAClick:this.opts.onGAClick,onSectionTap:k=>this.handleSectionTap(k),onDeckTap:k=>this.handleDeckTap(k),onFps:this.opts.onFps});if(n.createRenderer=r(u),this.closed)return m.destroy(),null;this.renderer=m;let b=null,f="free",p=[],g=performance.now();try{let k=await this.api.objects(this.key);this.hidden=new Set(k.hidden??[]),p=(k.closed??[]).filter(w=>typeof w=="string"),b=k.seats,f=k.default??"free"}catch{}if(n.loadStatuses=r(g),this.closed)return m.destroy(),this.renderer=null,null;let v=performance.now();m.setChart(this.visibleDoc()),(o.doc.floors?.length??0)>1&&m.setFloorOverview?.(!0),this.opts.colorblindSafe&&m.setColorblindSafe?.(!0),n.buildScene=r(v),this.closedSections=new Set(p);let y=performance.now();p.length&&m.setClosedSections?.(p),b&&this.applySeatsMap(b,f),this.rebuildSelectableSeatIds(),this.opts.selectedObjects?.length?this.select(this.opts.selectedObjects):this.emitSelectionValidity(),n.applyInitialState=r(y);let x=performance.now();m.forceDraw(),n.firstPaint=r(x);let I=performance.now();return this.attachVisibilityListener(),this.connect(),n.startRealtime=r(I),n.controllerTotal=r(i),{doc:o.doc,salesClosed:!!o.event.salesClosed,eventName:o.event.name,venue:o.event.venue,startsAt:o.event.startsAt,timezone:o.event.timezone??null,currency:h,mode:o.event.mode??"live",posterUrl:o.event.posterUrl??null,performanceProfile:n}}getSelection(){if(!this.renderer)return[];let e=[],i=new Set;for(let n of this.renderer.getSelection()){let r=this.groupedTableBySeatId.get(n.id);r?i.has(r.label)||(i.add(r.label),e.push(this.toTableSeat(r))):e.push(this.toSeat(n))}return e}seatDetails(e){let i=this.seatById.get(e);return i?this.describeSeat(i):null}clearSelection(){this.renderer?.clearSelection(),this.resetUnheldTableQuantities(),this.emitSelectionChange()}deselect(e){let i=new Set;for(let n of e){let r=this.groupedTableBySeatId.get(n)??this.groupedTablesByLabel.get(n);if(r)r.chairs.forEach(o=>i.add(o.id)),this.hold_?.labels.includes(r.label)||(this.tableQuantities.set(r.label,r.mode==="whole"?r.capacity:r.minOccupancy),r.mode==="variable"&&this.confirmedVariableTables.delete(r.label));else{let o=this.seatById.has(n)?n:this.labelToId.get(n);o&&i.add(o)}}this.renderer?.deselect([...i]),this.emitSelectionChange()}setMaxSelection(e){this.maxSelection=Math.max(0,Math.floor(e)),this.renderer?.setMaxSelection?.(this.rendererSelectionCap())}select(e){let i=new Set(this.getSelection().map(s=>s.label)),n=new Set,r=[];for(let s of e){let a=this.groupedTableBySeatId.get(s)??this.groupedTablesByLabel.get(s);if(a)this.tableTierResolution(a).kind==="invalid"?r.push(a.label):a.chairs.forEach(c=>{this.isSelectableByPolicy(c.id)&&n.add(c.id)});else{let l=this.seatById.has(s)?s:this.labelToId.get(s);if(!l||!this.isSelectableByPolicy(l))continue;let c=this.seatById.get(l);c&&this.seatTierResolution(c).kind==="invalid"?r.push(c.label):n.add(l)}}if(r.length&&this.emitError(new ke(ui(r))),!n.size)return[];if(this.renderer?.select?.([...n]),this.selectionGuestCount()>this.maxSelection)return this.renderer?.deselect([...n]),this.opts.onSelectionLimit?.(this.maxSelection),[];let o=this.getSelection().filter(s=>!i.has(s.label));return o.length&&this.emitSelectionChange(),o}selectCategories(e){let i=new Set(e);return this.select([...this.seatById.values()].filter(n=>i.has(n.categoryKey)).map(n=>n.id))}deselectCategories(e){let i=new Set(e);this.deselect(this.getSelection().filter(n=>i.has(n.categoryKey)).map(n=>n.id))}setSelectableObjects(e){this.selectableObjectRefs=e==null?null:[...new Set(e.filter(n=>typeof n=="string"&&!!n))],this.rebuildSelectableSeatIds();let i=this.renderer?.getSelection().filter(n=>!this.isSelectableByPolicy(n.id)).map(n=>n.id)??[];i.length&&this.deselect(i)}getSelectionValidity(e){if(this.numberOfPlacesToSelect==null&&!this.selectionValidators.length)return null;let i=this.getSelection(),n=e??i.reduce((r,o)=>r+(o.quantity??1),0);return ts(i,n,this.numberOfPlacesToSelect,this.selectionValidators,()=>this.hasOrphanedSelection())}hasOrphanedSelection(){let e=this.renderer;if(!e)return!1;let i=new Set(e.getSelection().map(n=>n.id));return i.size>0&&un(this.seatById.values(),n=>e.getStatus(n),i).length>0}rebuildSelectableSeatIds(){if(this.selectableObjectRefs==null){this.selectableSeatIds=null;return}let e=new Set;for(let i of this.selectableObjectRefs){let n=this.groupedTableBySeatId.get(i)??this.groupedTablesByLabel.get(i);if(n){n.chairs.forEach(o=>e.add(o.id));continue}let r=this.seatById.has(i)?i:this.labelToId.get(i);r&&e.add(r)}this.selectableSeatIds=e}isSelectableByPolicy(e){return this.selectableSeatIds==null||this.selectableSeatIds.has(e)}setTableQuantity(e,i){let n=this.groupedTablesByLabel.get(e);if(!n)return!1;let r=n.mode==="whole"?n.capacity:Math.floor(i);if(!Number.isInteger(r)||r<n.minOccupancy||r>n.maxOccupancy)return!1;let o=this.tableQuantities.get(e)??n.minOccupancy;return this.tableQuantities.set(e,r),this.selectionGuestCount()>this.maxSelection?(this.tableQuantities.set(e,o),this.opts.onSelectionLimit?.(this.maxSelection),!1):(n.mode==="variable"&&this.confirmedVariableTables.add(e),this.emitSelectionChange(),!0)}async replaceTableQuantity(e,i,n){let r=this.groupedTablesByLabel.get(e),o=this.hold_;if(!r||r.mode!=="variable"||!o?.labels.includes(e))return null;let s=Math.floor(i);if(!Number.isInteger(s)||s<r.minOccupancy||s>r.maxOccupancy)return null;if((o.items??[]).filter(d=>d.label!==e).reduce((d,h)=>d+(h.quantity??1),0)+s>this.maxSelection)return this.opts.onSelectionLimit?.(this.maxSelection),null;let l=(o.items??[]).map(d=>({label:d.label,tierId:d.tierId,quantity:d.label===e?s:d.quantity}));if(!l.some(d=>d.label===e))return null;let c=await this.api.hold(this.key,l,n,o.holdId);return this.tableQuantities.set(e,s),this.setHold({holdId:c.holdId,labels:l.map(d=>d.label),expiresAt:c.expiresAt,items:c.items}),this.hold_}rendererSelectionCap(){return this.maxSelection+this.groupedSelectionOverhead}selectionGuestCount(){return this.getSelection().reduce((e,i)=>e+(i.quantity??1),0)}handleRendererSelect(e){let i=this.groupedTableBySeatId.get(e.id);if(!this.isSelectableByPolicy(e.id)){this.renderer?.deselect(i?i.chairs.map(r=>r.id):[e.id]),this.emitSelectionChange();return}if((i?this.tableTierResolution(i):this.seatTierResolution(e)).kind==="invalid"){this.renderer?.deselect(i?i.chairs.map(r=>r.id):[e.id]),this.emitError(new ke(ui([i?.label??e.label]))),this.emitSelectionChange();return}if(i){if(this.selectionGuestCount()>this.maxSelection){this.renderer?.deselect(i.chairs.map(r=>r.id)),this.opts.onSelectionLimit?.(this.maxSelection),this.emitSelectionChange();return}this.renderer?.select?.(i.chairs.map(r=>r.id)),this.opts.onSelect?.(i.chairs[0]??e),this.opts.onTableSelectionRequest?.(this.toTableSeat(i)),this.emitSelectionChange();return}if(this.selectionGuestCount()>this.maxSelection){this.renderer?.deselect([e.id]),this.opts.onSelectionLimit?.(this.maxSelection),this.emitSelectionChange();return}this.opts.onSelect?.(e),this.emitSelectionChange()}handleRendererDeselect(e){let i=this.groupedTableBySeatId.get(e.id);i?(this.renderer?.deselect(i.chairs.map(n=>n.id)),this.hold_?.labels.includes(i.label)||(this.tableQuantities.set(i.label,i.mode==="whole"?i.capacity:i.minOccupancy),i.mode==="variable"&&this.confirmedVariableTables.delete(i.label)),this.opts.onDeselect?.(i.chairs[0]??e)):this.opts.onDeselect?.(e),this.emitSelectionChange()}resetUnheldTableQuantities(){for(let e of this.groupedTablesByLabel.values())this.hold_?.labels.includes(e.label)||(this.tableQuantities.set(e.label,e.mode==="whole"?e.capacity:e.minOccupancy),e.mode==="variable"&&this.confirmedVariableTables.delete(e.label))}resetTableQuantitiesForLabels(e){for(let i of e){let n=this.groupedTablesByLabel.get(i);n&&(this.tableQuantities.set(i,n.mode==="whole"?n.capacity:n.minOccupancy),n.mode==="variable"&&this.confirmedVariableTables.delete(i))}}tableQuantityRequest(e){if(e?.objectType!=="table")return{};if(e.bookingMode==="variable"&&!this.confirmedVariableTables.has(e.label))throw new Error("picker: confirm a variable table guest quantity before holding");return{quantity:e.quantity}}async hold(e,i){if(!this.renderer)return null;let r=e??this.getSelection().map(l=>l.label),o=(this.hold_?.items??[]).filter(l=>l.objectType==="ga"),s=[...new Set([...o.map(l=>l.label),...r])];if(!s.length)return null;let a=this.ticketIssue(s);if(a)throw new ke(a);if(this.hold_&&this.holdCovers(s))return this.hold_;try{let l=s.map(d=>{let h=o.find(b=>b.label===d);if(h)return{label:d,tierId:h.tierId,quantity:h.quantity};let u=this.labelToSeat.get(d),m=u?this.toSeat(u):null;return{label:d,...m?.tierId?{tierId:m.tierId}:{},...this.tableQuantityRequest(m)}}),c=await this.api.hold(this.key,l,i,this.hold_?.holdId);return this.setHold({holdId:c.holdId,labels:s,expiresAt:c.expiresAt,items:c.items}),this.hold_}catch(l){throw this.handle409Conflicts(l),l}}async resumeHold(e){if(this.closed||!e||!this.api.resume)return null;let i=await this.api.resume(this.key,e);if(this.closed)return null;let n=[...new Set(i.items.map(r=>r.label))];return n.length?(this.setHold({holdId:i.holdId,labels:n,expiresAt:i.expiresAt,items:i.items},"restored"),this.hold_):null}async extendHold(e){let i=this.hold_;if(!i||!this.api.extend)return null;try{let n=await this.api.extend(this.key,i.holdId,e);return this.hold_?.holdId!==i.holdId?this.hold_:(this.setHold({holdId:i.holdId,labels:i.labels,expiresAt:n.expiresAt,items:i.items}),this.hold_)}catch{return null}}categoryAvailability(){let e={},i=this.closedMemberIds();for(let[n,r]of this.seatById)this.groupedTableBySeatId.has(n)||i.has(n)||(this.getStatus(n)??"free")==="free"&&(e[r.categoryKey]=(e[r.categoryKey]??0)+1);for(let n of this.groupedTablesByLabel.values()){if(n.chairs.some(o=>i.has(o.id)))continue;let r=n.chairs[0];r&&(this.getStatus(r.id)??"free")==="free"&&(e[n.categoryKey]=(e[n.categoryKey]??0)+n.maxOccupancy)}return e}closedMemberIds(){let e=new Set,i=this.renderer;if(!i||!this.closedSections.size)return e;for(let n of this.closedSections)for(let r of i.sectionMembers?.(n)??[])e.add(r);return e}getGAAreas(){let e=this.visibleDoc();return e?lt(e).map(i=>{let n=e.categories.find(r=>r.key===i.categoryKey);return{id:i.id,label:i.label,...i.displayLabel?{displayLabel:i.displayLabel}:{},...i.displayType?{displayType:i.displayType}:{},capacity:Math.max(0,Math.floor(i.capacity)),available:Ge(i).filter(r=>this.statusOf(r)==="free").length,categoryKey:i.categoryKey,tiers:n?.tiers,price:n?.tiers?.[0]?.price??n?.price??0,currency:this.currency}}):[]}async holdGA(e,i,n={}){let r=this.visibleDoc();if(!r||!Number.isFinite(i)||i<1)return null;let o=lt(r).find(d=>d.id===e);if(!o)return null;let s=Ge(o).filter(d=>!this.hold_?.labels.includes(d)&&this.statusOf(d)==="free").slice(0,Math.floor(i));if(s.length!==Math.floor(i))return null;let a=new Map;for(let d of this.hold_?.items??[])a.set(d.label,{label:d.label,tierId:d.tierId,quantity:d.quantity});if(this.hold_&&!this.hold_?.items?.length)for(let d of this.hold_.seats)a.set(d.label,{label:d.label,...d.tierId?{tierId:d.tierId}:{}});for(let d of this.getSelection())a.set(d.label,{label:d.label,...d.tierId?{tierId:d.tierId}:{},...this.tableQuantityRequest(d)});for(let d of s)a.set(d,{label:d,...n.tierId?{tierId:n.tierId}:{}});let l=[...a.values()],c=await this.api.hold(this.key,l,n.ttlMs,this.hold_?.holdId);return this.setHold({holdId:c.holdId,labels:l.map(d=>d.label),expiresAt:c.expiresAt,items:c.items}),this.hold_}hasPremiumSeats(){for(let e of this.labelToSeat.values())if(e.commercial?.premium)return!0;return!1}getBestAvailableZones(){let e=this.visibleDoc();if(!e?.zones?.length)return[];let i=new Set(ct(e).sections.filter(n=>n.seatCount>0&&!!n.zone).map(n=>n.zone));return e.zones.filter(n=>i.has(n.id)).map(n=>({id:n.id,label:n.label}))}pickPremiumBlock(e,i,n){let r=this.visibleDoc();if(!r?.objects?.length)return null;let o=r.focalPoint??{x:0,y:0},s=new Set(this.groupedTablesByObject.keys()),a=be(r).filter(u=>!s.has(u.rowId)),l=new Set(this.hold_?.labels??[]),c=new Set;for(let u of a){if(l.has(u.label)||this.seatTierResolution(u).kind==="invalid")continue;let m=this.labelToId.get(u.label);((m?this.getStatus(m):void 0)??"free")==="free"&&c.add(u.label)}let d=Yo(a,c,{qty:e,categoryKey:i,zoneId:n,focal:o,preferPremium:!0});return d.labels.length!==e?null:d.labels.every(u=>this.labelToSeat.get(u)?.commercial?.premium)?[...d.labels]:null}async bestAvailable(e,i,n={}){let r=this.renderer;if(!r)return null;if(n.preferPremium){let o=this.pickPremiumBlock(e,i,n.zoneId);if(o){if(this.hold_&&!await this.release())return null;try{let s=o.map(d=>{let h=this.labelToSeat.get(d),u=h?this.toSeat(h):null;return{label:d,...u?.tierId?{tierId:u.tierId}:{}}}),a=await this.api.hold(this.key,s,n.ttlMs);r.clearSelection();let l=this.idsForLabels(o);l.length&&r.setStatus(l,"held"),this.setHold({holdId:a.holdId,labels:[...o],expiresAt:a.expiresAt,items:a.items});let c=o.map(d=>this.labelToSeat.get(d)).filter(d=>!!d).map(d=>this.toSeat(d));return this.opts.onSelectionChange?.(c),this.hold_}catch(s){let{status:a,reason:l}=hi(s);if(a===409&&l==="event_closed")throw this.opts.onSalesClosed?.(),s}}}if(this.hold_&&!await this.release())return null;try{let o=await this.api.bestAvailable(this.key,e,i,n.zoneId,n.ttlMs);r.clearSelection();let s=this.idsForLabels(o.labels);s.length&&r.setStatus(s,"held"),this.setHold({holdId:o.holdId,labels:[...o.labels],expiresAt:o.expiresAt,items:o.items});let a=o.labels.map(l=>this.labelToSeat.get(l)).filter(l=>!!l).map(l=>this.toSeat(l));return this.opts.onSelectionChange?.(a),this.hold_}catch(o){let{status:s,reason:a}=hi(o);throw s===409&&a==="event_closed"&&this.opts.onSalesClosed?.(),o}}async book(e,i,n){let r=this.renderer;if(!r)return null;if(!this.api.book)throw new Error("picker: transport has no book() \u2014 hold-only mode");let o=i??this.getSelection().map(c=>c.label);if(!o.length)return null;let s=this.ticketIssue(o);if(s)throw new ke(s);let a;try{if(this.hold_&&this.holdCovers(o))a=this.hold_.holdId;else{let c=this.hold_?.holdId,d=await this.api.hold(this.key,o.map(h=>{let u=this.labelToSeat.get(h),m=u?this.toSeat(u):null;return{label:h,...m?.tierId?{tierId:m.tierId}:{},...this.tableQuantityRequest(m)}}),n,c);a=d.holdId,this.setHold({holdId:a,labels:[...o],expiresAt:d.expiresAt,items:d.items})}await this.api.book(this.key,o,a,e)}catch(c){let{status:d,conflicts:h,reason:u}=hi(c);if(this.clearHold(),d===409&&u==="event_closed")this.opts.onSalesClosed?.();else if(d===409&&h?.length){let m=new Set(h.map(p=>p.label)),b=this.idsForLabels(m);b.length&&(r.setStatus(b,"booked"),r.deselect(b),this.resetTableQuantitiesForLabels(m));let f=o.filter(p=>!m.has(p));f.length&&a&&this.api.release(this.key,f,a).catch(()=>{}),this.emitSelectionChange()}else a&&this.api.release(this.key,o,a).catch(()=>{});throw c}let l=this.idsForLabels(o);return l.length&&(r.setStatus(l,"booked"),r.deselect(l)),this.clearHold(),this.resetTableQuantitiesForLabels(o),this.emitSelectionChange(),this.opts.onBook?.(e),o}async release(){let e=this.hold_;if(!e)return!0;try{let n=await this.api.release(this.key,e.labels,e.holdId);if(!this.releaseConfirmed(n,e.labels))return await this.resnapshot(),!1}catch(n){return this.emitError(n),!1}if(this.hold_?.holdId!==e.holdId)return!0;this.clearHold(),this.resetTableQuantitiesForLabels(e.labels);let i=this.idsForLabels(e.labels);return i.length&&(this.renderer?.deselect(i),this.renderer?.setStatus(i,"free")),!0}async releaseLabels(e){let i=this.hold_;if(!i)return!0;let n=e.filter(a=>i.labels.includes(a));if(!n.length)return!0;try{let a=await this.api.release(this.key,n,i.holdId);if(!this.releaseConfirmed(a,n))return await this.resnapshot(),!1}catch(a){return this.emitError(a),!1}if(this.hold_?.holdId!==i.holdId)return!0;let r=i.labels.filter(a=>!n.includes(a)),o=i.items?.filter(a=>!n.includes(a.label));r.length?this.setHold({...i,labels:r,items:o}):this.clearHold(),this.resetTableQuantitiesForLabels(n);let s=this.idsForLabels(n);return s.length&&(this.renderer?.deselect(s),this.renderer?.setStatus(s,"free")),!0}releaseConfirmed(e,i){let n=e?.released;return!Array.isArray(n)||i.every(r=>n.includes(r))}setStatus(e,i){this.renderer?.setStatus(e,i)}getStatus(e){return this.renderer?.getStatus(e)}notForSaleCategorySeatIds(){let e=this.doc;if(!e)return[];let i=new Set(e.categories.filter(r=>r.notForSale).map(r=>r.key));if(!i.size)return[];let n=[];for(let[r,o]of this.seatById)i.has(o.categoryKey)&&n.push(r);return n}flashSeat(e,i){this.renderer?.flashSeat(e,i)}zoomIn(){this.renderer?.zoomIn()}zoomOut(){this.renderer?.zoomOut()}zoomToFit(){this.renderer?.zoomToFit()}refitCurrentView(){this.renderer?.refitCurrentView?this.renderer.refitCurrentView():this.renderer?.zoomToFit()}worldToScreen(e){return this.renderer?.worldToScreen(e)??{x:0,y:0}}setSelectionFocus(e){this.renderer?.setSelectionFocus?.(e)}setAccessibilityFilter(e){this.renderer?.setAccessibilityFilter?.(e)}setCommercialLimitedFilter(e){this.renderer?.setCommercialLimitedFilter?.(e)}getFloors(){return this.renderer?.getFloors?.()??[]}getActiveFloorId(){return this.renderer?.getActiveFloorId?.()??""}setFloor(e){let i=this.renderer;!i?.setActiveFloor||e===i.getActiveFloorId?.()&&!i.isFloorOverview?.()||(i.setFloorOverview?.(!1),i.setStacked?.(!1),i.setActiveFloor(e),this.resnapshot(),this.emitSelectionChange())}setStacked(e){let i=this.renderer;!i?.setStacked||e===i.isStacked?.()||(i.setStacked(e),this.resnapshot())}isMultiFloor(){return(this._doc?.floors?.length??0)>1}setFloorOverview(e){let i=this.renderer;!i?.setFloorOverview||e===i.isFloorOverview?.()||(i.setFloorOverview(e),this.resnapshot(),this.emitSelectionChange())}isFloorOverview(){return this.renderer?.isFloorOverview?.()??!1}handleDeckTap(e){let i=this.renderer;i&&(i.setViewMode?.("flat"),i.setFloorOverview?.(!1),i.setStacked?.(!1),i.setActiveFloor?.(e),this.resnapshot(),this.emitSelectionChange(),this.opts.onDeckTap?.(e))}setViewMode(e){this.renderer?.setViewMode?.(e)}getViewMode(){return this.renderer?.getViewMode?.()??"flat"}getRung(){return this.renderer?.getRung?.()??"seats"}setRung(e){if(e==="zones"){this.overview();return}this.renderer?.setRung?.(e)}setCategoryFilter(e){this.renderer?.setCategoryFilter?.(e)}focusCategoryFilter(e){let i=this.renderer;if(i){if(i.clearSectionFocus?.(),this.opts.onSectionFocus?.(null),e?.length){let n=this.floorForCategories(e);n&&this.setFloor(n)}i.focusCategories?i.focusCategories(e):i.zoomToFit()}}floorForCategories(e){let i=this._doc;if(!i?.floors||i.floors.length<2)return null;let n=new Set(e),r=a=>a.some(l=>l.type==="row"&&(n.has(l.categoryKey)||(l.overrides??[]).some(c=>c.categoryKey!=null&&n.has(c.categoryKey)))||l.type==="gaArea"&&n.has(l.categoryKey)),o=this.getActiveFloorId(),s=i.floors.find(a=>a.id===o);return s&&r(s.objects)?null:i.floors.find(a=>r(a.objects))?.id??null}getViewport(){let e=this.renderer;return!e?.getVisibleWorldRect||!e.getWorldBounds?null:{visible:e.getVisibleWorldRect(),bounds:e.getWorldBounds()}}getMinimapSnapshot(){return this.renderer?.getMinimapSnapshot?.()??{sections:[],seats:[]}}panToWorld(e){this.renderer?.panToWorld?.(e)}clearSectionFocus(){this.renderer?.clearSectionFocus?.(),this.opts.onSectionFocus?.(null)}getRenderedQualityEvidence(){return this.renderer?.getRenderedQualityEvidence()??null}focusSection(e){this.handleSectionTap(e)}getSectionSeatCount(e){return this.renderer?.sectionMembers?.(e)?.length??0}overview(){this.renderer?.clearSectionFocus?.(),this.renderer?.zoomToFit(),this.opts.onSectionFocus?.(null)}handleSectionTap(e){let i=this.renderer;if(i){if(i.focusSection?i.focusSection(e):i.focusRegion?.(e),this.isSectionClosed(e)){this.opts.onSectionFocus?.(null);return}this.opts.onSectionFocus?.(this.sectionSummary(e))}}sectionSummary(e){let i=this.renderer,n=this._doc;if(!i||!n)return null;let r=n.objects.find(b=>b.type==="section"&&b.id===e);if(!r)return null;let o=i.sectionMembers?.(e)??[],s=new Map,a=new Set,l=0;for(let b of o){let f=this.seatById.get(b);if(!f)continue;let p=this.groupedTableBySeatId.get(b);if(p){if(a.has(p.label))continue;a.add(p.label),s.set(p.categoryKey,(s.get(p.categoryKey)??0)+p.maxOccupancy),i.getStatus(p.chairs[0]?.id??b)==="free"&&(l+=p.maxOccupancy)}else s.set(f.categoryKey,(s.get(f.categoryKey)??0)+1),i.getStatus(b)==="free"&&l++}let c=[...s.entries()].map(([b,f])=>{let p=n.categories.find(x=>x.key===b),g=p?.tiers?.length?p.tiers.map(x=>x.price):[p?.price??0],v=Math.min(...g),y=Math.max(...g);return{key:b,count:f,label:p?.label??b,color:p?.color??"#6e7bff",price:v,priceMin:v,priceMax:y}}).sort((b,f)=>b.price-f.price),d=c.map(b=>b.priceMin),h=c.map(b=>b.priceMax),u=r.zone?n.zones?.find(b=>b.id===r.zone):void 0,m=r.color??u?.color??c[0]?.color??"#6e7bff";return{id:e,label:r.displayLabel??r.label,zoneLabel:u?.label??"",...r.entrance&&r.entrance.trim()?{entrance:r.entrance.trim()}:{},color:m,seatsLeft:l,priceMin:d.length?Math.min(...d):0,priceMax:h.length?Math.max(...h):0,categories:c}}destroy(){if(this.closed=!0,this.detachVisibilityListener(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.expiryTimer&&(clearTimeout(this.expiryTimer),this.expiryTimer=null),this.realtime){try{this.realtime.stop()}catch{}this.realtime=null}if(this.ws){try{this.ws.close()}catch{}this.ws=null}this.renderer?.destroy(),this.renderer=null}toSeat(e){let i=this.groupedTableBySeatId.get(e.id);if(i)return this.toTableSeat(i);let n=e.commercial?{commercial:e.commercial}:void 0,r=e.displayLabel?{displayLabel:e.displayLabel}:void 0,o=e.accessibility?.length?{accessibility:e.accessibility}:void 0,s=e.wheelchairSpaceType?{wheelchairSpaceType:e.wheelchairSpaceType}:void 0,a=this.seatContext.get(e.id),l=this.tiersForSeat(e),c=this.seatTierResolution(e);if(c.kind!=="resolved"||!l)return{id:e.id,label:e.label,...r,...a,categoryKey:e.categoryKey,price:this.priceFor(e.categoryKey),currency:this.currency,...n,...o,...s};let d=c.tier;return{id:e.id,label:e.label,...r,...a,categoryKey:e.categoryKey,price:d.price,currency:this.currency,tiers:l,tierId:d.id,...n,...o,...s}}toTableSeat(e){let i=e.chairs[0],n=this.tiersFor(e.categoryKey)?.filter(s=>it(this._doc,this.tableTierSeat(e),s.id).kind==="resolved"),r=this.tableTierResolution(e),o=r.kind==="resolved"?r.tier:void 0;return{id:i?.id??e.objectId,label:e.label,displayLabel:e.displayLabel??e.label,...e.displayType?{displayType:e.displayType,rowType:e.displayType}:{},objectId:e.objectId,sectionLabel:i?this.seatContext.get(i.id)?.sectionLabel:void 0,rowLabel:e.displayLabel??e.label,categoryKey:e.categoryKey,price:o?.price??this.priceFor(e.categoryKey),currency:this.currency,...n?{tiers:n,tierId:o?.id}:{},objectType:"table",bookingMode:e.mode,quantity:this.tableQuantities.get(e.label)??(e.mode==="whole"?e.capacity:e.minOccupancy),capacity:e.capacity,minOccupancy:e.minOccupancy,maxOccupancy:e.maxOccupancy,physicalSeatIds:e.chairs.map(s=>s.id)}}describeSeat(e){let i=this._doc?.categories.find(n=>n.key===e.categoryKey);return{...this.toSeat(e),categoryLabel:i?.label??e.categoryKey,categoryColor:i?.color??"#6e7bff",status:this.renderer?.getStatus(e.id)??"free",currency:this.currency,...this.seatContext.get(e.id)}}priceFor(e){return this._doc?.categories.find(i=>i.key===e)?.price??0}tiersFor(e){let i=this._doc?.categories.find(n=>n.key===e)?.tiers;return i&&i.length?i:void 0}tiersForSeat(e){if(!this._doc)return;let i=$o(this._doc,e);return i.length?i:void 0}seatTierResolution(e){return this._doc?it(this._doc,e,this.seatTiers.get(e.id)):{kind:"none"}}tableTierSeat(e){return{label:e.label,categoryKey:e.categoryKey,accessibility:e.chairs.flatMap(i=>i.accessibility??[])}}tableTierResolution(e){if(!this._doc)return{kind:"none"};let i=e.chairs[0]?.id??"";return it(this._doc,this.tableTierSeat(e),this.seatTiers.get(i))}setSeatTier(e,i){let n=this.seatById.get(e);if(!n)return;let r=this.tiersForSeat(n);if(r){if(i==null)this.seatTiers.delete(e);else if(r.some(o=>o.id===i))this.seatTiers.set(e,i);else return;this.emitSelectionChange(),this.hold_&&(this.hold_={...this.hold_,seats:this.seatsForLabels(this.hold_.labels)})}}seatsForLabels(e){let i=[];for(let n of e){let r=this.labelToSeat.get(n);r&&i.push(this.toSeat(r))}return i}emitSelectionChange(){let e=this.getSelection();this.opts.onSelectionChange?.(e),this.emitSelectionValidity(),this.emitOrphanHint()}emitSelectionValidity(){let e=this.getSelectionValidity();e&&(this.opts.onSelectionValidityChange?.(e),e.isValid?this.lastSelectionValidity!==!0&&this.opts.onSelectionValid?.(e.seats):this.lastSelectionValidity!==!1&&this.opts.onSelectionInvalid?.(e),this.lastSelectionValidity=e.isValid)}ticketIssue(e){if(!this._doc)return null;let i=e?this.seatsForLabels(e):this.getSelection();return Zo(this._doc,i.map(n=>({label:n.label,...n.tierId?{tierId:n.tierId}:{}})))}emitOrphanHint(){if(!this.opts.onHint)return;let e=this.renderer;if(!e)return;let i=this.ticketIssue();if(i){this.hintShown=!0,this.opts.onHint(i.code==="companion_pair_required"?oe("picker.companionPairRequired"):"That ticket choice is not available for the selected seat.");return}let n=new Set(e.getSelection().map(o=>o.id));(n.size?un(this.seatById.values(),o=>e.getStatus(o),n):[]).length>0?(this.hintShown=!0,this.opts.onHint(oe("picker.orphanHint"))):this.hintShown&&(this.hintShown=!1,this.opts.onHint(null))}setColorblindSafe(e){this.renderer?.setColorblindSafe?.(e)}emitError(e){this.opts.onError?this.opts.onError(e):console.error("[picker]",e)}holdCovers(e){let i=this.hold_;if(!i||i.labels.length!==e.length||!e.every(o=>i.labels.includes(o)))return!1;let n=new Map((i.items??[]).map(o=>[o.label,o.tierId])),r=new Map((i.items??[]).map(o=>[o.label,o.quantity??1]));return e.every(o=>{let s=this.labelToSeat.get(o),a=s?this.toSeat(s):null,l=a?.tierId??null;return(a?.objectType!=="table"||(a.bookingMode!=="variable"||this.confirmedVariableTables.has(o))&&(!r.has(o)||r.get(o)===a.quantity))&&(!n.has(o)||n.get(o)===l)})}handle409Conflicts(e){let{status:i,conflicts:n}=hi(e);if(i!==409||!n?.length)return;let r=this.renderer;if(!r)return;let o=this.idsForLabels(n.map(s=>s.label));o.length&&(r.deselect(o),r.setStatus(o,"held"),this.resetTableQuantitiesForLabels(n.map(s=>s.label))),this.emitSelectionChange()}setHold(e,i="created"){for(let o of e.items??[])this.groupedTablesByLabel.has(o.label)&&o.quantity!=null&&(this.tableQuantities.set(o.label,o.quantity),this.groupedTablesByLabel.get(o.label)?.mode==="variable"&&this.confirmedVariableTables.add(o.label));let n={...e,seats:this.seatsForLabels(e.labels)};this.hold_=n,this.renderer?.setOwnedHold?.(this.idsForLabels(n.labels)),this.expiryTimer&&clearTimeout(this.expiryTimer);let r=Math.max(0,n.expiresAt-Date.now());this.expiryTimer=setTimeout(()=>{this.expireActiveHold()},r),i==="restored"?this.opts.onHoldRestored?.(n):this.opts.onHold?.(n)}clearHold(){this.hold_=null,this.renderer?.setOwnedHold?.(null),this.expiryTimer&&(clearTimeout(this.expiryTimer),this.expiryTimer=null)}async expireActiveHold(){let e=this.hold_;if(e){try{let i=await this.api.objects(this.key);if(this.hold_?.holdId!==e.holdId)return;this.applySeatsMap(i.seats,i.default??"free")}catch{this.hold_?.holdId===e.holdId&&(this.expiryTimer=setTimeout(()=>{this.expireActiveHold()},2e3));return}if(this.hold_?.holdId===e.holdId){if(e.labels.some(i=>this.statusOf(i)==="held")){this.expiryTimer=setTimeout(()=>{this.expireActiveHold()},1e3);return}this.clearHold(),this.opts.onHoldExpired?.()}}}applySeatsMap(e,i="free"){let n=this.renderer;if(!n)return;this.liveStatuses=new Map(Object.entries(e)),this.liveDefault=i;let r=mn(i);this.allIds.length&&n.setStatus(this.allIds,r),n.setOwnedHold?.(this.idsForLabels(this.hold_?.labels??[]));let o={free:[],held:[],booked:[],not_for_sale:[]};for(let[a,l]of Object.entries(e))o[mn(l)].push(...this.idsForLabel(a));["free","held","booked","not_for_sale"].forEach(a=>{a!==r&&o[a].length&&n.setStatus(o[a],a)});let s=this.notForSaleCategorySeatIds();s.length&&n.setStatus(s,"not_for_sale"),this.clearBookedHoldIfSettled(),this.opts.onStatusChange?.()}statusOf(e){return this.liveStatuses.get(e)??this.liveDefault}clearBookedHoldIfSettled(){let e=this.hold_;e?.labels.every(i=>this.statusOf(i)==="booked")&&(this.clearHold(),this.resetTableQuantitiesForLabels(e.labels))}async resnapshot(){try{let e=await this.api.objects(this.key);this.applySeatsMap(e.seats,e.default??"free")}catch{}}async refresh(){await this.resnapshot()}attachVisibilityListener(){if(this.onVisibilityChange||typeof document>"u"||typeof document.addEventListener!="function")return;let e=()=>{this.closed||document.visibilityState==="visible"&&this.resnapshot().then(()=>{this.closed||this.renderer?.forceDraw()})};this.onVisibilityChange=e,document.addEventListener("visibilitychange",e)}detachVisibilityListener(){this.onVisibilityChange&&(typeof document<"u"&&typeof document.removeEventListener=="function"&&document.removeEventListener("visibilitychange",this.onVisibilityChange),this.onVisibilityChange=null)}realtimeSink(){return{applyStatuses:e=>this.applyStatusChanges(e),applyProjection:e=>this.applySeatsMap(e.exceptions,e.default),resync:()=>this.resnapshot(),onSections:(e,i)=>{let n=this.syncHidden(e),r=this.syncClosed(i);n&&this.resnapshot(),(n||r)&&this.opts.onStatusChange?.()}}}applyStatusChanges(e){let i=this.renderer;if(i){for(let n of e){this.liveStatuses.set(n.label,n.status);let r=this.idsForLabel(n.label);if(!r.length)continue;let o=mn(n.status);this.opts.flashOnLiveChange&&o!=="free"&&r.some(s=>i.getStatus(s)==="free")&&!this.hold_?.labels.includes(n.label)&&r.forEach(s=>i.flashSeat(s,o==="held"?"#f4b740":"#f43f5e")),i.setStatus(r,o)}this.opts.keepLiveWhileHidden&&typeof document<"u"&&document.visibilityState==="hidden"&&i.forceDraw(),this.clearBookedHoldIfSettled(),this.opts.onStatusChange?.()}}connect(){if(this.closed)return;let e=this.api.socketUrl(this.key);if(!e)return;if(!this.realtime&&this.api.createRealtime){let n=null;try{n=this.api.createRealtime(this.key,this.realtimeSink())}catch{n=null}if(n){this.realtime=n,n.start();return}}if(this.realtime)return;let i;try{let n=this.api.socketProtocols?.(this.key);i=n&&n.length?new WebSocket(e,n):new WebSocket(e)}catch{this.scheduleReconnect();return}this.ws=i,i.onopen=()=>{this.attempt=0,this.resnapshot()},i.onmessage=n=>{let r;try{r=JSON.parse(typeof n.data=="string"?n.data:"")}catch{return}if(!this.renderer||!r||typeof r!="object")return;let s=r;Array.isArray(s.hidden)&&this.syncHidden(s.hidden)&&(this.resnapshot(),this.opts.onStatusChange?.()),Array.isArray(s.closed)&&this.syncClosed(s.closed)&&this.opts.onStatusChange?.(),s.type!=="hidden"&&(s.seats&&typeof s.seats=="object"?this.applySeatsMap(s.seats):Array.isArray(s.changes)&&this.applyStatusChanges(s.changes))},i.onclose=()=>{this.ws===i&&(this.ws=null),this.scheduleReconnect()},i.onerror=()=>{try{i.close()}catch{}}}scheduleReconnect(){if(this.closed||this.reconnectTimer)return;let e=Math.min(this.attempt++,5),i=Uo(e,{baseMs:1e3,maxMs:hl,jitter:1});this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},i)}};var fl=5,ml=-1.1,gn=35;function yn(t,e){let i=t-W,n=Math.atan2(fl-i,e)*180/Math.PI,r=Math.atan2(ml-i,e)*180/Math.PI;return r<-gn&&(n+=-gn-r,r=-gn),{topPitch:n,basePitch:r}}var q=2048,pe=1024,Pt=Fe,B=Math.PI*2,bl=pe/180,rt=t=>(t+180)/360*q,H=t=>(90-t)/180*pe;function as(t){let e=2166136261;for(let i=0;i<t.length;i++)e^=t.charCodeAt(i),e=Math.imul(e,16777619);return e>>>0}function ls(t){let e=t>>>0;return()=>{e|=0,e=e+1831565813|0;let i=Math.imul(e^e>>>15,1|e);return i=i+Math.imul(i^i>>>7,61|i)^i,((i^i>>>14)>>>0)/4294967296}}var pi=96,kn=360/pi,gl=.6,Sn=[17,23,42];function vn(t,e,i=1){let n=Math.max(0,Math.min(.58,e)),r=Math.round(t[0]+(Sn[0]-t[0])*n),o=Math.round(t[1]+(Sn[1]-t[1])*n),s=Math.round(t[2]+(Sn[2]-t[2])*n);return`rgba(${r},${o},${s},${i})`}function ns(t,e,i){return[Math.round(t[0]+(e[0]-t[0])*i),Math.round(t[1]+(e[1]-t[1])*i),Math.round(t[2]+(e[2]-t[2])*i)]}function te(t,e,i){let n=(1-Math.abs(2*i-1))*e,r=(t%360+360)%360/60,o=n*(1-Math.abs(r%2-1)),s=0,a=0,l=0;r<1?[s,a,l]=[n,o,0]:r<2?[s,a,l]=[o,n,0]:r<3?[s,a,l]=[0,n,o]:r<4?[s,a,l]=[0,o,n]:r<5?[s,a,l]=[o,0,n]:[s,a,l]=[n,0,o];let c=i-n/2;return[Math.round((s+c)*255),Math.round((a+c)*255),Math.round((l+c)*255)]}var rs=new Map;function os(t){if(!t)return null;let e=rs.get(t);if(e)return e;let i=2166136261;for(let o=0;o<t.length;o++)i^=t.charCodeAt(o),i=Math.imul(i,16777619);let n=(i>>>0)%360,r=te(n,.3,.42);return rs.set(t,r),r}function yl(t,e,i,n){let r=new Array(pi).fill(null),o=0,s=t.sectionId;for(let a of e){if(a.id===t.id)continue;let l=a.sectionId;if(!l||s&&l===s)continue;let c=a.x-t.x,d=a.y-t.y,h=Math.hypot(c,d)*Pt;if(h<1.5||h>95)continue;let u=a.eyeHeightM??W,m=u-n;Math.abs(m)>o&&(o=Math.abs(m));let b=Math.atan2(m,h)*180/Math.PI,f=Math.atan2(u-W-n,h)*180/Math.PI,g=((Math.atan2(c,-d)-i)*180/Math.PI+540)%360-180,v=Math.min(pi-1,Math.max(0,Math.floor((g+180)/kn))),y=b>34&&h<16,x=r[v];x?(b>x.top&&(x.top=b),f<x.base&&(x.base=f),h<x.nearM&&(x.nearM=h,x.tint=os(a.categoryKey)),x.overhead=x.overhead||y):r[v]={top:b,base:f,nearM:h,overhead:y,tint:os(a.categoryKey)}}return{bins:r,maxDelta:o}}function Sl(t,e,i,n){for(let r=0;r<pi;r++){let o=e[r];if(!o)continue;let s=-180+r*kn,a=i(s),l=i(s+kn);if(!(l>a))continue;let c=Math.min(72,o.top),d=Math.min(o.base,-4),h=n(c),u=n(d);if(u<=h)continue;let m=o.nearM/95,b=o.tint,f=b?ns([44,54,80],b,.34):[44,54,80],p=b?ns([24,30,48],b,.28):[24,30,48],g=t.createLinearGradient(0,h,0,u);g.addColorStop(0,vn(f,m)),g.addColorStop(.24,vn(p,m)),g.addColorStop(1,vn([10,13,22],m)),t.fillStyle=g,t.fillRect(a,h,l-a+1,u-h),t.fillStyle=`rgba(150,165,205,${.35*(1-m*.55)})`,t.fillRect(a,h,l-a+1,1.5);let y=Math.min(u,n(0))-h;if(y>8){let I=1-m*.4;for(let k=1;k<6;k++){let w=h+y*k/6;t.fillStyle=`rgba(0,0,0,${.16*I})`,t.fillRect(a,w,l-a+1,1.5),t.fillStyle=`rgba(120,134,170,${.1*I})`,t.fillRect(a,w+1.5,l-a+1,1.2)}}if(o.overhead){let x=n(Math.min(86,c+12)),I=t.createLinearGradient(0,x,0,h);I.addColorStop(0,"rgba(3,4,8,0.9)"),I.addColorStop(1,"rgba(3,4,8,0)"),t.fillStyle=I,t.fillRect(a,x,l-a+1,h-x),t.fillStyle="rgba(120,130,160,0.14)",t.fillRect(a,h-1.5,l-a+1,1.5)}}}function vl(t,e,i){let r=new Array(72).fill(!1),o=new Array(72).fill(1/0),s=new Set,a=0;for(let g of i){a++,g.sectionId&&s.add(g.sectionId);let v=g.x-e.x,y=g.y-e.y,x=Math.hypot(v,y)*Pt;if(x<.5)continue;let I=Math.atan2(v,-y),k=Math.floor((I+Math.PI)/B*72);k<0?k=0:k>=72&&(k=71),r[k]=!0,x<o[k]&&(o[k]=x)}let l=0,c=[];for(let g=0;g<72;g++)r[g]&&(l++,c.push(o[g]));let d=l/72*360;c.sort((g,v)=>g-v);let h=c.length?c[c.length>>1]:0,u=c.length?c[Math.floor(c.length*.15)]??h:0,m=c.length?c[Math.floor(c.length*.85)]??h:0,b=u>.5?m/u:1,f=as(`${a}|${[...s].sort().join(",")}|${Math.round(e.x)},${Math.round(e.y)}`),p;return d>=300&&h>11&&b>1.35?p="sport":d>=285?p="arena":p="proscenium",{mode:p,seed:f,voidRadiusM:h,aspect:b}}var kl=5;function xl(t,e,i){switch(i){case 1:t.beginPath(),t.ellipse(0,-e*.14,e*1.16,e*1.16,0,0,B),t.fill();break;case 2:t.beginPath(),t.ellipse(0,-e*1.02,e*.42,e*.42,0,0,B),t.fill(),t.beginPath(),t.ellipse(0,-e*.2,e*.98,e*1.02,0,0,B),t.fill();break;case 3:t.beginPath(),t.ellipse(0,-e*.36,e*1.04,e*.6,0,Math.PI,B),t.fill(),t.beginPath(),t.ellipse(0,-e*.52,e*1.22,e*.24,0,0,B),t.fill();break;case 4:t.beginPath(),t.ellipse(-e*.66,e*.5,e*.5,e*1.35,0,0,B),t.fill(),t.beginPath(),t.ellipse(e*.66,e*.5,e*.5,e*1.35,0,0,B),t.fill(),t.beginPath(),t.ellipse(0,-e*.08,e*1.06,e*1.08,0,0,B),t.fill();break;default:break}}function wl(t,e,i,n,r){let o=n*.44,s=n*r.shoulderK,a=n*.66,l=n*1.68,c=n*5.4,d=`rgba(${r.clothing[0]},${r.clothing[1]},${r.clothing[2]},${r.alpha})`,h=`rgba(${r.tone[0]},${r.tone[1]},${r.tone[2]},${r.alpha})`;t.save(),t.translate(e,i);let u=r.lean*n;t.fillStyle=d,t.beginPath(),t.moveTo(-o,a),t.quadraticCurveTo(-o*1.18,l-u-n*.6,-s,l-u),t.quadraticCurveTo(-s*1.05,l+n*1.2,-s*.94,c),t.lineTo(s*.94,c),t.quadraticCurveTo(s*1.05,l+n*1.2,s,l+u),t.quadraticCurveTo(o*1.18,l+u-n*.6,o,a),t.closePath(),t.fill(),t.fillStyle=h,t.fillRect(-o*.82,n*.5,o*1.64,n*.9),t.save(),t.rotate(r.tilt),t.translate(r.turn*n,0),t.fillStyle=h,n>=18?(t.beginPath(),t.moveTo(-n*.9,-n*.15),t.quadraticCurveTo(-n*.96,-n*1.12,0,-n*1.06),t.quadraticCurveTo(n*.96,-n*1.12,n*.9,-n*.15),t.quadraticCurveTo(n*.86,n*.55,n*.36,n*.98),t.quadraticCurveTo(0,n*1.14,-n*.36,n*.98),t.quadraticCurveTo(-n*.86,n*.55,-n*.9,-n*.15),t.closePath(),t.fill(),n>=22&&(t.beginPath(),t.ellipse(-n*.9,n*.18,n*.13,n*.22,0,0,B),t.ellipse(n*.9,n*.18,n*.13,n*.22,0,0,B),t.fill())):(t.beginPath(),t.ellipse(0,0,n*.9,n*1.06,0,0,B),t.fill()),xl(t,n,r.hair),r.rim>.01&&(t.strokeStyle=`rgba(245,205,150,${(.5*r.rim).toFixed(3)})`,t.lineWidth=Math.max(1,n*.14),t.beginPath(),t.ellipse(0,-n*.06,n*.86,n*1,0,Math.PI*1.12,Math.PI*1.9),t.stroke()),t.restore(),r.rim>.01&&(t.strokeStyle=`rgba(240,200,150,${(.28*r.rim).toFixed(3)})`,t.lineWidth=Math.max(1,n*.12),t.beginPath(),t.moveTo(-s*.8,l-n*.05),t.quadraticCurveTo(-o,l-n*.75,0,l-n*.82),t.quadraticCurveTo(o,l-n*.75,s*.8,l-n*.05),t.stroke()),t.restore()}function Il(t,e,i,n,r,o,s){t.fillStyle=`rgba(${r[0]},${r[1]},${r[2]},${s})`,t.beginPath(),t.moveTo(e-n*1.72,i+n*4),t.quadraticCurveTo(e-n*1.78,i+n*1.55,e-n*.46,i+n*1.02),t.lineTo(e-n*.4,i+n*.62),t.lineTo(e+n*.4,i+n*.62),t.lineTo(e+n*.46,i+n*1.02),t.quadraticCurveTo(e+n*1.78,i+n*1.55,e+n*1.72,i+n*4),t.closePath(),t.fill(),t.fillStyle=`rgba(${o[0]},${o[1]},${o[2]},${s})`,t.beginPath(),t.ellipse(e,i,n*.9,n*1.05,0,0,B),t.fill()}function wn(t,e,i,n,r){let o=n*.1,s=i-n*.9,a=i-n*.74,l=i-n*.46,c=n*.13,d=n*.09,h=`rgba(${r.tone[0]},${r.tone[1]},${r.tone[2]},${r.alpha})`,u=t.createRadialGradient(e,i,1,e,i,n*.24);u.addColorStop(0,"rgba(0,0,0,0.4)"),u.addColorStop(1,"rgba(0,0,0,0)"),t.save(),t.scale(1,.28),t.fillStyle=u,t.beginPath(),t.ellipse(e,i/.28,n*.24,n*.24,0,0,B),t.fill(),t.restore(),t.fillStyle=h,t.beginPath(),t.moveTo(e-d,l),t.lineTo(e-d*.7,i),t.lineTo(e-d*.1,i),t.lineTo(e-d*.1,l+n*.02),t.lineTo(e+d*.1,l+n*.02),t.lineTo(e+d*.1,i),t.lineTo(e+d*.7,i),t.lineTo(e+d,l),t.closePath(),t.fill(),t.beginPath(),t.moveTo(e-c,a),t.quadraticCurveTo(e-c*.9,l-n*.12,e-d,l),t.lineTo(e+d,l),t.quadraticCurveTo(e+c*.9,l-n*.12,e+c,a),t.quadraticCurveTo(e,a-n*.05,e-c,a),t.closePath(),t.fill(),t.lineCap="round",t.lineJoin="round",t.strokeStyle=h,t.lineWidth=n*.055;let m=a+n*.02;r.pose===1?(t.beginPath(),t.moveTo(e-c*.8,m),t.lineTo(e-c*1.5,i-n*1.02),t.moveTo(e+c*.8,m),t.lineTo(e+c*1.5,i-n*1.02),t.stroke()):r.pose===2?(t.beginPath(),t.moveTo(e-c*.8,m),t.lineTo(e+d*1.4,l-n*.02),t.moveTo(e+c*.8,m),t.lineTo(e-d*.4,l-n*.06),t.stroke(),t.fillStyle=h,t.beginPath(),t.ellipse(e+d*1.5,l-n*.04,n*.07,n*.09,-.5,0,B),t.fill()):r.pose===3?(t.beginPath(),t.moveTo(e-c*.8,m),t.lineTo(e-c*.2,s+o*.6),t.moveTo(e+c*.8,m),t.lineTo(e+c*1.1,l),t.stroke(),t.lineWidth=n*.02,t.beginPath(),t.moveTo(e-c*.2,s+o*.9),t.lineTo(e-c*.2,i-n*.02),t.stroke()):(t.beginPath(),t.moveTo(e-c*.85,m),t.lineTo(e-c*.95,l+n*.02),t.moveTo(e+c*.85,m),t.lineTo(e+c*.95,l+n*.02),t.stroke()),t.fillStyle=h,t.fillRect(e-o*.34,s+o*.6,o*.68,o*.9),t.beginPath(),t.ellipse(e,s,o*.86,o*1.05,0,0,B),t.fill(),r.rimStrength>.01&&(t.strokeStyle=`rgba(${r.rim[0]},${r.rim[1]},${r.rim[2]},${(.6*r.rimStrength).toFixed(3)})`,t.lineWidth=Math.max(1,n*.02),t.beginPath(),t.moveTo(e-c,a),t.lineTo(e-o*.6,s+o*.4),t.moveTo(e-o*.7,s),t.ellipse(e,s,o*.84,o*1.02,0,Math.PI*1.05,Math.PI*1.55),t.stroke())}function fi(t,e,i,n,r,o,s,a,l){t.save(),t.globalCompositeOperation="lighter";let c=t.createLinearGradient(0,i,0,r);c.addColorStop(0,`rgba(${a},${l})`),c.addColorStop(.5,`rgba(${a},${(l*.4).toFixed(3)})`),c.addColorStop(1,`rgba(${a},0)`),t.fillStyle=c,t.beginPath(),t.moveTo(e-o,i),t.lineTo(n-s,r),t.lineTo(n+s,r),t.lineTo(e+o,i),t.closePath(),t.fill(),t.restore()}function In(t,e,i,n,r){let o=t.createRadialGradient(e,i,0,e,i,n*3);o.addColorStop(0,`rgba(${r},0.9)`),o.addColorStop(.4,`rgba(${r},0.35)`),o.addColorStop(1,`rgba(${r},0)`),t.fillStyle=o,t.beginPath(),t.arc(e,i,n*3,0,B),t.fill(),t.fillStyle=`rgba(${r},1)`,t.beginPath(),t.arc(e,i,n,0,B),t.fill()}function Tl(t,e,i){let n=document.createElement("canvas");n.width=q,n.height=pe;let r=n.getContext("2d"),o=e.x-t.x,s=e.y-t.y,a=Math.hypot(o,s),l=Math.max(2,a*Pt),c=t.eyeHeightM??W,d=vl(t,e,i),h=ls(d.seed),u=210+h()*150,m=te(220+(h()-.5)*60,.55,.82),b=`${m[0]},${m[1]},${m[2]}`,f=r.createLinearGradient(0,0,0,pe);f.addColorStop(0,"#080b12"),f.addColorStop(.42,"#12182c"),f.addColorStop(.5,"#1c2440"),f.addColorStop(.56,"#151b2c"),f.addColorStop(.78,"#171e30"),f.addColorStop(1,"#131829"),r.fillStyle=f,r.fillRect(0,0,q,pe);let p=r.createLinearGradient(0,H(-6),0,pe);p.addColorStop(0,"rgba(30, 37, 56, 0)"),p.addColorStop(.55,"rgba(30, 37, 56, 0.22)"),p.addColorStop(1,"rgba(22, 28, 44, 0.12)"),r.fillStyle=p,r.fillRect(0,H(-6),q,pe-H(-6));let g=Math.atan2(o,-s),v=yl(t,i,g,c),y=v.maxDelta>=gl;y&&Sl(r,v.bins,rt,H);let x=Math.max(.3,Math.min(1,1-(l-6)/60)),I=yn(c,l),k=Math.min(80,Math.atan2(4,l)*180/Math.PI),w=Math.min(45,I.topPitch),M=I.basePitch;d.mode==="sport"?Ml(r,l,c,d,x,u,b,h):d.mode==="arena"?Cl(r,l,c,d,x,b,h):Ll(r,k,w,M,x,u,b,h);let C=d.mode==="sport"?34:24+Math.floor(h()*8);r.fillStyle=`rgba(${b},0.8)`;for(let R=0;R<C;R++){let S=(R+.5)/C*q,T=H(d.mode==="sport"?58:54+R*7%3*6);r.beginPath(),r.arc(S,T,d.mode==="sport"?2.6:3.2,0,B),r.fill()}Pl(r,t,i,e,g,c,o,s,y,d);let L=r.createLinearGradient(0,0,0,pe);return L.addColorStop(0,"rgba(0,0,0,0.85)"),L.addColorStop(.12,"rgba(0,0,0,0)"),L.addColorStop(.9,"rgba(0,0,0,0)"),L.addColorStop(1,"rgba(0,0,0,0.55)"),r.fillStyle=L,r.fillRect(0,0,q,pe),{url:n.toDataURL("image/jpeg",.82),distanceM:Math.round(l)}}function Ll(t,e,i,n,r,o,s,a){let l=rt(-e),c=rt(e),d=H(i),h=H(n),u=c-l,m=h-d,b=H(Math.min(50,i+10)),f=u*(1.1+(1-r)*.5),p=t.createRadialGradient(q/2,(d+h)/2,8,q/2,(d+h)/2,f);p.addColorStop(0,"rgba(255, 214, 150, 0.34)"),p.addColorStop(.28,"rgba(150, 150, 230, 0.3)"),p.addColorStop(.6,"rgba(99, 102, 241, 0.12)"),p.addColorStop(1,"rgba(99, 102, 241, 0)"),t.fillStyle=p,t.fillRect(l-u*.6,d-m*1.2,u*2.2,m*3.4);let g=te(o,.62,.55),v=te(o+40,.7,.5),y=te(o+70,.78,.52);t.save(),t.beginPath(),t.rect(l,d,u,m),t.clip();let x=t.createLinearGradient(0,d,0,h);x.addColorStop(0,`rgb(${g[0]},${g[1]},${g[2]})`),x.addColorStop(.5,`rgb(${v[0]},${v[1]},${v[2]})`),x.addColorStop(1,`rgb(${y[0]},${y[1]},${y[2]})`),t.globalAlpha=.8,t.fillStyle=x,t.fillRect(l,d,u,m),t.globalAlpha=1;let I=t.createRadialGradient(q/2,(d+h)/2,u*.12,q/2,(d+h)/2,u*.62);I.addColorStop(0,"rgba(6,8,14,0)"),I.addColorStop(.7,"rgba(6,8,14,0.15)"),I.addColorStop(1,"rgba(5,6,11,0.92)"),t.fillStyle=I,t.fillRect(l,d,u,m),t.restore();let k=3+Math.floor(a()*3),w=m*.46,M=h-m*.08;for(let F=0;F<k;F++){let j=(F+1)/(k+1),_=l+u*(.22+j*.56+(a()-.5)*.06);wn(t,_,M,w*(.9+a()*.24),{tone:[8,10,16],alpha:.9,pose:Math.floor(a()*4),rim:te(o+20,.5,.7),rimStrength:.7})}t.fillStyle="#05070d",t.fillRect(l-u*.5,b,u*.5,h-b),t.fillRect(c,b,u*.5,h-b);let C=u*.055+3,L=C*1.35;t.fillStyle="#03050a",t.beginPath(),t.moveTo(l,h),t.lineTo(l-C,h),t.lineTo(l-L,b),t.lineTo(l+u*.012,b),t.closePath(),t.fill(),t.beginPath(),t.moveTo(c,h),t.lineTo(c+C,h),t.lineTo(c+L,b),t.lineTo(c-u*.012,b),t.closePath(),t.fill(),t.fillRect(l-L,b,u+L*2,(h-b)*.12);let R=m*.14,S=b+(h-b)*.12;t.fillStyle="rgba(4,6,12,0.96)";let T=7;t.beginPath(),t.moveTo(l-L,S);for(let F=0;F<=T;F++){let j=l-L+(u+L*2)*F/T;t.quadraticCurveTo(j-(u+L*2)/T/2,S+R,j,S)}t.lineTo(c+L,S),t.lineTo(c+L,b),t.lineTo(l-L,b),t.closePath(),t.fill(),t.fillStyle=`rgba(${s},0.12)`,t.fillRect(l-1.5,S,1.5,h-S),t.fillRect(c,S,1.5,h-S),t.fillStyle="#0b0f18",t.fillRect(l-C,h-m*.05,u+C*2,m*.05+3);let E=t.createLinearGradient(0,h-m*.05,0,h+m*.12);E.addColorStop(0,`rgba(255,206,140,${(.5*r).toFixed(3)})`),E.addColorStop(1,"rgba(255,206,140,0)"),t.fillStyle=E,t.fillRect(l-C,h-m*.05,u+C*2,m*.2);let O=3+Math.floor(a()*2);for(let F=0;F<O;F++){let j=(F+1)/(O+1),_=l+u*(j+(a()-.5)*.08),G=H(Math.min(62,i+26)),X=(a()-.5)*u*.16;fi(t,_,G,_+X,h,4,u*.09,s,.16*(.7+r*.5)),In(t,_,G,2.4,s)}}function Cl(t,e,i,n,r,o,s){let a=Math.min(e*.6,Math.max(3,n.voidRadiusM)),l=Math.min(55,Math.atan2(a,e)*180/Math.PI),c=q/2,d=1.2,h=Math.max(e*.45,e-a),u=e+a,m=Math.atan2(d-i,h)*180/Math.PI,b=Math.atan2(d-i,u)*180/Math.PI,f=Math.atan2(-i,h)*180/Math.PI,p=H(m),g=H(b),v=H(f),y=rt(l)-c,x=Math.max(6,(p-g)/2),I=(p+g)/2,k=t.createRadialGradient(c,v,4,c,v,y*2.6);k.addColorStop(0,`rgba(255,206,150,${(.2*r).toFixed(3)})`),k.addColorStop(.5,"rgba(150,140,190,0.08)"),k.addColorStop(1,"rgba(40,44,60,0)"),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=k,t.fillRect(c-y*2.6,g-x,y*5.2,v-g+x+40),t.restore(),t.fillStyle="#0c1019",t.beginPath(),t.moveTo(c-y,I),t.ellipse(c,I,y,x,0,Math.PI,0,!1),t.lineTo(c+y,v),t.ellipse(c,v,y,x,0,0,Math.PI,!1),t.closePath(),t.fill();let w=t.createLinearGradient(0,I,0,v);w.addColorStop(0,`rgba(${o},0.14)`),w.addColorStop(1,"rgba(0,0,0,0)"),t.fillStyle=w,t.fillRect(c-y,I,y*2,v-I);let M=[[{u:-.24,v:.4,lead:!0,pose:3},{u:.34,v:-.04,pose:2},{u:-.52,v:-.38,pose:0}],[{u:.2,v:.34,lead:!0,pose:3},{u:-.3,v:-.08,pose:2}],[{u:-.1,v:.28,lead:!0,pose:1},{u:.44,v:-.2,pose:2},{u:-.46,v:-.14,pose:2},{u:.08,v:-.46,pose:0}]],C=M[Math.floor(s()*M.length)],L=s()<.5?-1:1,R=N=>c+N.u*L*y*.84,S=N=>I+N.v*x*.8,T=C.find(N=>N.lead)??C[0],E=R(T),O=t.createLinearGradient(0,I-x,0,I+x);O.addColorStop(0,"#3d4a72"),O.addColorStop(1,"#232b47"),t.fillStyle=O,t.beginPath(),t.ellipse(c,I,y,x,0,0,B),t.fill();let F=t.createRadialGradient(E,I,2,E,I,y);F.addColorStop(0,`rgba(255,214,160,${(.5*r).toFixed(3)})`),F.addColorStop(1,"rgba(255,214,160,0)"),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=F,t.beginPath(),t.ellipse(c,I,y,x,0,0,B),t.fill(),t.restore(),t.strokeStyle=`rgba(${o},0.7)`,t.lineWidth=2,t.beginPath(),t.ellipse(c,I,y,x,0,0,B),t.stroke();let j=Math.max(24,(v-g)*1.3),_=C.length>=3?3:2;for(let N=0;N<_;N++){let fe=(-.62+N*.52+(s()-.5)*.12)*-L,Me=c+fe*y*.7,ot=I-x*(.45+s()*.18),Be=y*(.07+s()*.04),Si=j*(.26+s()*.12);t.fillStyle="#0a0e18",t.fillRect(Me-Be/2,ot-Si,Be,Si),t.fillStyle=`rgba(${o},0.3)`,t.fillRect(Me-Be/2,ot-Si,Be,1.5)}if(C.length>=3){let N=c-T.u*L*y*.4;t.fillStyle="#0b0f1a",t.beginPath(),t.ellipse(N,I-x*.34,y*.08,x*.1,0,0,B),t.fill(),t.strokeStyle=`rgba(${o},0.35)`,t.lineWidth=1,t.stroke()}for(let N of[...C].sort((fe,Me)=>fe.v-Me.v)){let fe=.82+(N.v+1)*.14;wn(t,R(N),S(N),j*fe*(N.lead?1.06:.92),{tone:[18,21,34],alpha:.95,pose:N.pose,rim:te(40,.72,.8),rimStrength:N.lead?1.4:.9})}let G=H(Math.min(60,b+34)),X=x*1.1+6;t.strokeStyle="rgba(60,68,92,0.85)",t.lineWidth=3,t.beginPath(),t.ellipse(c,G,y*1.15,X,0,0,B),t.stroke();let D=4+Math.floor(s()*3);for(let N=0;N<D;N++){let fe=N/D*B,Me=c+Math.cos(fe)*y*1.15,ot=G+Math.sin(fe)*X;if(Math.sin(fe)>-.2){let Be=c+(s()-.5)*y*.8;fi(t,Me,ot,Be,I,3,y*.32,o,.2*(.7+r*.4))}In(t,Me,ot,3,o)}let z=H(Math.min(52,b+24)),P=Math.max(60,y*.4),$=Math.max(24,P*.34);t.strokeStyle="rgba(70,78,102,0.6)",t.lineWidth=1.5,t.beginPath(),t.moveTo(c-P*.3,z-$/2),t.lineTo(c-P*.16,z-$*2.2),t.moveTo(c+P*.3,z-$/2),t.lineTo(c+P*.16,z-$*2.2),t.stroke(),t.fillStyle="#0d1220",t.fillRect(c-P/2,z-$/2,P,$);let mi=t.createLinearGradient(0,z-$*.3,0,z+$*.42);mi.addColorStop(0,`rgba(${o},0.5)`),mi.addColorStop(1,"rgba(255,214,160,0.32)"),t.fillStyle=mi,t.fillRect(c-P*.42,z-$*.3,P*.84,$*.72),t.fillStyle="rgba(255,214,160,0.55)",t.fillRect(c-P/2,z+$/2-2,P,2);let bi=t.createRadialGradient(c,z,4,c,z,P*1.1);bi.addColorStop(0,`rgba(${o},0.2)`),bi.addColorStop(1,"rgba(0,0,0,0)"),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=bi,t.fillRect(c-P*1.1,z-P*.8,P*2.2,P*1.6);let gi=t.createRadialGradient(c,(G+I)/2,6,c,(G+I)/2,y*1.5);gi.addColorStop(0,`rgba(${o},${(.1*(.6+r*.5)).toFixed(3)})`),gi.addColorStop(1,"rgba(0,0,0,0)"),t.fillStyle=gi,t.fillRect(c-y*1.5,G-40,y*3,I-G+80),t.restore();let bs=c+Math.sign(E-c||1)*y*.5;fi(t,bs,G-X*.4,E,S(T),2.5,y*.16,"255,224,178",.42*(.7+r*.4));let yi=t.createRadialGradient(E,S(T),1,E,S(T),y*.2);yi.addColorStop(0,`rgba(255,228,185,${(.4*r).toFixed(3)})`),yi.addColorStop(1,"rgba(255,228,185,0)"),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=yi,t.beginPath(),t.ellipse(E,S(T),y*.2,x*.24,0,0,B),t.fill(),t.restore()}function Ml(t,e,i,n,r,o,s,a){let l=q/2,c=Math.max(10,n.voidRadiusM),d=Math.max(2,e-c),h=e+c,u=Math.min(78,Math.atan2(c*1.15,e)*180/Math.PI),m=Math.atan2(-i,d)*180/Math.PI,b=Math.atan2(-i,h)*180/Math.PI,f=H(m),p=H(b),g=rt(u)-l,v=(f+p)/2,y=Math.max(10,(f-p)/2),x=t.createRadialGradient(l,v,4,l,v,g);x.addColorStop(0,"#e8f0fb"),x.addColorStop(.7,"#b9c9e2"),x.addColorStop(1,"#8fa3c4"),t.save(),t.beginPath(),t.ellipse(l,v,g,y,0,0,B),t.clip(),t.fillStyle=x,t.fillRect(l-g,v-y,g*2,y*2),t.strokeStyle="rgba(90,120,170,0.5)",t.lineWidth=3,t.beginPath(),t.moveTo(l,v-y),t.lineTo(l,v+y),t.moveTo(l-g*.5,v-y),t.lineTo(l-g*.5,v+y),t.moveTo(l+g*.5,v-y),t.lineTo(l+g*.5,v+y),t.stroke(),t.strokeStyle="rgba(180,90,110,0.45)",t.beginPath(),t.ellipse(l,v,y*.9,y*.5,0,0,B),t.stroke(),t.restore(),t.strokeStyle="rgba(210,225,245,0.6)",t.lineWidth=2.5,t.beginPath(),t.ellipse(l,v,g,y,0,0,B),t.stroke(),t.fillStyle="rgba(20,26,40,0.8)";for(let R=0;R<5;R++){let S=l+(a()-.5)*g*1.4,T=v+(a()-.5)*y*1.1,E=Math.max(2,y*.06);t.beginPath(),t.ellipse(S,T,E*.6,E,0,0,B),t.fill()}let I=t.createRadialGradient(l,v,4,l,v,g*1.4);I.addColorStop(0,"rgba(200,220,255,0.12)"),I.addColorStop(1,"rgba(200,220,255,0)"),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=I,t.fillRect(l-g*1.4,p-y,g*2.8,f-p+y*2),t.restore();let k=H(Math.min(66,b+60)),w=Math.max(80,g*.7),M=w*.5,C=t.createRadialGradient(l,k,4,l,k,w*1.6);C.addColorStop(0,`rgba(${s},0.3)`),C.addColorStop(1,`rgba(${s},0)`),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=C,t.fillRect(l-w*1.6,k-w*1.2,w*3.2,w*2.4),t.restore(),t.fillStyle="#080b12",t.beginPath(),t.moveTo(l-w/2,k-M/2),t.lineTo(l+w/2,k-M/2),t.lineTo(l+w*.6,k),t.lineTo(l+w/2,k+M/2),t.lineTo(l-w/2,k+M/2),t.lineTo(l-w*.6,k),t.closePath(),t.fill();let L=o;for(let R=0;R<3;R++){let S=te(L+R*30,.5,.5);t.fillStyle=`rgba(${S[0]},${S[1]},${S[2]},0.75)`;let T=w*.26;t.fillRect(l-w*.42+R*(T+w*.06),k-M*.32,T,M*.64)}t.fillStyle=`rgba(${s},0.9)`;for(let R=0;R<8;R++){let S=l-w*.6+w*1.2*R/7;t.beginPath(),t.arc(S,k+M*.62,2.4,0,B),t.fill()}}function Pl(t,e,i,n,r,o,s,a,l,c){let d=e.sectionId,h=!1,u=[];for(let f of i){if(f.id===e.id)continue;let p=f.x-e.x,g=f.y-e.y,v=Math.hypot(p,g)*Pt;if(d&&f.sectionId===d&&v<3&&p*s+g*a>0&&(h=!0),v<.3||v>32)continue;let x=((Math.atan2(p,-g)-r)*180/Math.PI+540)%360-180,I=l?(f.eyeHeightM??W)-o:0,k=Math.atan2(I-.28,v)*180/Math.PI;if(k>10&&v>5)continue;let w=0;for(let L=0;L<f.id.length;L++)w=w*31+f.id.charCodeAt(L)&65535;let M=.9+(w&15)/40,C=Math.min(78,Math.atan2(.16,v)*180/Math.PI*bl*M);C<1.2||u.push({hx:rt(x),hy:H(k),r:C,d:v,hash:w})}u.sort((f,p)=>p.d-f.d);let m=[];{let f=[...u].sort((v,y)=>v.hy-y.hy),p=[],g=()=>{if(!p.length)return;let v=p.reduce((I,k)=>I+k.d,0)/p.length,y=p.reduce((I,k)=>I+k.hy,0)/p.length,x=p.reduce((I,k)=>I+k.r,0)/p.length;m.push({figs:p.sort((I,k)=>k.d-I.d),d:v,hy:y,r:x}),p=[]};for(let v of f){let y=p[p.length-1];y&&Math.abs(v.hy-y.hy)>Math.max(5,(y.r+v.r)/2*1.7)&&g(),p.push(v)}g()}m.sort((f,p)=>p.d-f.d);let b=[[22,26,40],[28,27,42],[24,31,46],[31,30,47],[20,24,36]];for(let f of m){if(f.figs.length>=3&&f.r>=1.6&&f.r<26){let p=[],g=[...f.figs].sort((x,I)=>x.hx-I.hx),v=[];for(let x of g){let I=v[v.length-1];I&&x.hx-I.hx>Math.max(14,x.r*7)&&(v.length>=3&&p.push(v),v=[]),v.push(x)}v.length>=3&&p.push(v);let y=Math.min(.42,.5*(1-f.d/42));if(y>.05){t.fillStyle=`rgba(15, 19, 31, ${y.toFixed(3)})`;for(let x of p){let I=x[0].hx-f.r*1.6,k=x[x.length-1].hx+f.r*1.6;t.beginPath(),t.roundRect(I,f.hy+f.r*.8,k-I,f.r*2.4,f.r*.8),t.fill()}}}for(let p of f.figs){let g=p.d<12?.95:p.d<17?Math.max(.66,.95-(p.d-12)/18):Math.max(.3,.68-(p.d-17)/34),v=Math.round((1-Math.min(1,p.d/16))*10),y=[14+(p.hash>>4&6)+v,17+(p.hash>>4&6)+v,25+(p.hash>>4&6)+v],x=b[p.hash%b.length],I=[x[0]+v,x[1]+v,x[2]+v];if(p.r>=13){let k=p.d<9?.16*(1-p.d/9)+(c.mode==="proscenium"?.06:0):0;wl(t,p.hx,p.hy,p.r,{tone:y,clothing:I,alpha:g,tilt:((p.hash>>2&7)-3.5)*.018,shoulderK:1.72+(p.hash>>5&7)/22,hair:p.hash%kl,rim:k,turn:((p.hash>>8&7)-3.5)*.034,lean:((p.hash>>10&3)-1.5)*.09})}else p.r>=5.5?Il(t,p.hx,p.hy,p.r,I,y,g):(t.fillStyle=`rgba(${y[0]},${y[1]},${y[2]},${g.toFixed(3)})`,t.beginPath(),t.arc(p.hx,p.hy,p.r,0,B),t.fill(),t.beginPath(),t.ellipse(p.hx,p.hy+p.r*1.4,p.r*1.85,p.r*.95,0,Math.PI,0,!0),t.fill())}}if(h){let f=H(-34);t.fillStyle="rgba(6, 8, 14, 0.92)",t.fillRect(0,f,q,pe-f),t.fillStyle="rgba(24, 30, 46, 0.9)";let p=16;for(let g=0;g<p;g++){let v=(g+.5)/p*q;t.beginPath(),t.ellipse(v,f+6,q/p*.42,22,0,Math.PI,0,!0),t.fill()}}}var ne=480,nt=270,xn=50,Ae=30,ss=t=>(t+xn)/(2*xn)*ne,Mt=t=>(Ae-t)/(2*Ae)*nt;function Rl(t,e,i){let n=document.createElement("canvas");n.width=ne,n.height=nt;let r=n.getContext("2d"),o=e.x-t.x,s=e.y-t.y,a=Math.max(2,Math.hypot(o,s)*Pt),l=ls(as(`${t.id}|${Math.round(e.x)},${Math.round(e.y)}`)),c=210+l()*150,d=te(220+(l()-.5)*60,.55,.82),h=`${d[0]},${d[1]},${d[2]}`,u=r.createLinearGradient(0,0,0,nt);u.addColorStop(0,"#080b12"),u.addColorStop(.44,"#151c32"),u.addColorStop(.5,"#1d2644"),u.addColorStop(.58,"#161c2e"),u.addColorStop(1,"#131829"),r.fillStyle=u,r.fillRect(0,0,ne,nt);let m=t.eyeHeightM??W,b=yn(m,a),f=Math.min(xn-2,Math.atan2(4,a)*180/Math.PI),p=Math.min(Ae-2,b.topPitch),g=Math.max(-Ae+2,b.basePitch),v=ss(-f),y=ss(f),x=Mt(p),I=Mt(g),k=y-v,w=I-x,M=Math.max(.35,Math.min(1,1-(a-6)/60)),C=Mt(Math.min(Ae-1,p+8)),L=r.createRadialGradient(ne/2,(x+I)/2,4,ne/2,(x+I)/2,k*1.15);L.addColorStop(0,"rgba(255,214,150,0.34)"),L.addColorStop(.28,"rgba(150,150,230,0.3)"),L.addColorStop(.6,"rgba(99,102,241,0.12)"),L.addColorStop(1,"rgba(99,102,241,0)"),r.fillStyle=L,r.fillRect(v-k*.6,x-w*1.2,k*2.2,w*3.4);let R=te(c,.62,.55),S=te(c+40,.7,.5),T=te(c+70,.78,.52);r.save(),r.beginPath(),r.rect(v,x,k,w),r.clip();let E=r.createLinearGradient(0,x,0,I);E.addColorStop(0,`rgb(${R[0]},${R[1]},${R[2]})`),E.addColorStop(.5,`rgb(${S[0]},${S[1]},${S[2]})`),E.addColorStop(1,`rgb(${T[0]},${T[1]},${T[2]})`),r.globalAlpha=.8,r.fillStyle=E,r.fillRect(v,x,k,w),r.globalAlpha=1;let O=r.createRadialGradient(ne/2,(x+I)/2,k*.12,ne/2,(x+I)/2,k*.6);O.addColorStop(0,"rgba(6,8,14,0)"),O.addColorStop(.7,"rgba(6,8,14,0.15)"),O.addColorStop(1,"rgba(5,6,11,0.9)"),r.fillStyle=O,r.fillRect(v,x,k,w),r.restore();let F=3,j=I-w*.08;for(let D=0;D<F;D++){let z=(D+1)/(F+1);wn(r,v+k*(.24+z*.52),j,w*.46*(.9+l()*.24),{tone:[8,10,16],alpha:.9,pose:Math.floor(l()*4),rim:te(c+20,.5,.7),rimStrength:.7})}r.fillStyle="#05070d",r.fillRect(v-k*.5,C,k*.5,I-C),r.fillRect(y,C,k*.5,I-C);let _=k*.05+2,G=_*1.35;r.fillStyle="#03050a",r.beginPath(),r.moveTo(v,I),r.lineTo(v-_,I),r.lineTo(v-G,C),r.lineTo(v+k*.012,C),r.closePath(),r.fill(),r.beginPath(),r.moveTo(y,I),r.lineTo(y+_,I),r.lineTo(y+G,C),r.lineTo(y-k*.012,C),r.closePath(),r.fill(),r.fillRect(v-G,C,k+G*2,(I-C)*.13),r.fillStyle=`rgba(${h},0.12)`,r.fillRect(v-1.2,C,1.2,I-C),r.fillRect(y,C,1.2,I-C),r.fillStyle="#0b0f18",r.fillRect(v-_,I-w*.05,k+_*2,w*.05+2);let X=r.createLinearGradient(0,I-w*.05,0,I+w*.14);X.addColorStop(0,`rgba(255,206,140,${(.5*M).toFixed(3)})`),X.addColorStop(1,"rgba(255,206,140,0)"),r.fillStyle=X,r.fillRect(v-_,I-w*.05,k+_*2,w*.22);for(let D=0;D<3;D++){let z=(D+1)/4,P=v+k*z,$=Mt(Math.min(Ae-1,p+20));fi(r,P,$,P+(l()-.5)*k*.14,I,3,k*.09,h,.17*M),In(r,P,$,1.8,h)}r.fillStyle=`rgba(${h},0.75)`;for(let D=0;D<8;D++)r.beginPath(),r.arc((D+.5)/8*ne,Mt(Ae-4-D%2*3),2.2,0,B),r.fill();r.fillStyle="rgba(10,13,20,0.9)",r.fillRect(0,nt-26,ne,26),r.fillStyle="rgba(30,37,54,0.9)";for(let D=0;D<9;D++){let z=D*(ne/9)+ne/18;r.beginPath(),r.ellipse(z,nt-22,ne/9*.4,15,0,Math.PI,0,!0),r.fill()}return{url:n.toDataURL("image/jpeg",.8),distanceM:Math.round(a)}}var Ol={es:()=>Promise.resolve().then(()=>(ds(),cs)).then(t=>({default:t.es})),de:()=>Promise.resolve().then(()=>(hs(),us)).then(t=>({default:t.de})),fr:()=>Promise.resolve().then(()=>(fs(),ps)).then(t=>({default:t.fr}))},ms=new Set(["en"]);async function Fl(t){let e=$i(t);if(e==="en"||ms.has(e))return ft(e),e;try{let i=await Ol[e]();return ft(e,i.default),ms.add(e),e}catch{return ft("en"),"en"}}0&&(module.exports={ACCESSIBILITY_RING_COLOR,ACCESSIBILITY_TYPES,CHART_STORAGE_KEY,CURRENCY_CHOICES,DEFAULT_CURRENCY,LABEL_STYLE_MAX_SIZE,LABEL_STYLE_MIN_SIZE,MAX_EVENT_INVENTORY,MAX_GA_CAPACITY,PickerController,PickerSelectionError,RENDERED_QUALITY_REPORT_VERSION,SEAT_COMMERCIAL_MARKS,SUPPORTED_LOCALES,SURROUNDINGS_SHAPE_ROLES,SeatmapRenderer,TIER_HEIGHT_M,UNGROUPED_ID,accessibilityMeta,accessibilityRingColor,allObjects,applyHidden,chartBounds,computeSections,createRenderer,currencyExponent,currencySymbol,expandBooth,expandChart,expandRow,expandRowSlots,expandTable,expandTableSlots,floorObjects,floorOverviewTranslations,floorsOf,formatDate,formatMinor,formatMoney,fromMinorUnits,gaAreasOf,gaInventorySegments,gaUnitLabel,gaUnitLabels,generateSeatPanorama,generateSeatThumb,getLocale,growJoinedGAInventory,hiddenObjectIds,inspectRenderedQualityEvidence,isGaUnitLabel,isSectionHidden,layerOf,layoutFloorOverview,loadLocale,objectCenter,owningSectionForObject,pointInPolygon,pointInPolygonWithHoles,polygonLabelPoint,resolveLocale,rowInventoryCount,rowSeatPositions,seatCommercialMeta,sectionGeometry,setLocale,setMoneyLocale,setStringOverrides,stackFloors,t,tCount,tableInventoryCount,tableSeatCountsBySide,translateObject,validGAInventorySegments});
|
|
1
|
+
"use strict";var vi=Object.defineProperty;var gs=Object.getOwnPropertyDescriptor;var ys=Object.getOwnPropertyNames;var Ss=Object.prototype.hasOwnProperty;var ki=(t,e,i)=>()=>{if(i)throw i[0];try{return t&&(e=t(t=0)),e}catch(n){throw i=[n],n}};var Rt=(t,e)=>{for(var i in e)vi(t,i,{get:e[i],enumerable:!0})},vs=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ys(e))!Ss.call(t,r)&&r!==i&&vi(t,r,{get:()=>e[r],enumerable:!(n=gs(e,r))||n.enumerable});return t};var ks=t=>vs(vi({},"__esModule",{value:!0}),t);var cs={};Rt(cs,{es:()=>El});var El,ds=ki(()=>{"use strict";El={"common.cancel":"Cancelar","common.close":"Cerrar","common.done":"Listo","common.copied":"\u2713 Copiado","picker.holdExpired":"Tu retenci\xF3n expir\xF3 \u2014 los asientos fueron liberados. Elige de nuevo.","picker.poweredBy":"Con la tecnolog\xEDa de SeatLayer","picker.testMode":"MODO DE PRUEBA","picker.orphanHint":"Esto deja un asiento aislado \u2014 considera desplazarte un asiento.","picker.companionRequiresWheelchair":"Requiere la plaza accesible contigua","picker.companionPairRequired":"Selecciona la plaza accesible contigua con cada entrada de acompa\xF1ante.","map.aria":"Mapa de asientos. Usa las flechas para moverte entre asientos, Intro para seleccionar.","map.seatsLeft":"{count} LIBRES","map.soldOut":"AGOTADO","map.statusHeld":"En espera","map.statusTaken":"Ocupado","map.fromPrice":"DESDE {price}","picker.floor":"Piso","picker.zoomLevel":"Nivel de zoom","picker.rungTip.zones":"Vista general \u2014 grupos de secciones como Grada norte o VIP","picker.rungTip.sections":"Bloques de secci\xF3n \u2014 las secciones agotadas y casi llenas se aten\xFAan para ver la disponibilidad de un vistazo","picker.rungTip.seats":"Asientos individuales \u2014 los bloques se convierten en puntos","picker.rungLabel.zones":"ZONAS","picker.rungLabel.sections":"SECCIONES","picker.rungLabel.seats":"ASIENTOS","picker.sectionSummaryAria":"Resumen de secci\xF3n {label}","picker.closeSectionSummary":"Cerrar resumen de secci\xF3n","picker.seatsLeftInSection.one":"{count} asiento disponible","picker.seatsLeftInSection.other":"{count} asientos disponibles","picker.overview":"Descripci\xF3n general","picker.entrance":"Entrada","picker.tapSeatHint":"Toca cualquier asiento para ver su vista","picker.ticketTierFor":"Categor\xEDa de entrada para {label}","picker.viewFromSeat":"Vista desde el asiento {label}","picker.real360":"REAL 360\xB0","picker.preview":"VISTA PREVIA","picker.sightline":"\u2248 {m} m al escenario","picker.panorama360":"Foto de 360\xB0 del lugar","picker.illustrationCaption":"ilustraci\xF3n \xB7 \u2248 {m} m del escenario","picker.restrictedView":"Visibilidad restringida","picker.obstructedView":"Visibilidad obstruida","picker.premiumSeat":"Asiento premium","picker.hideLimitedView":"Ocultar asientos con visibilidad limitada","picker.bestSeatsPremium":"Mejores asientos","picker.premiumFallbackNote":"No hay un bloque premium de {count}: mostrando los mejores disponibles","picker.loading3d":"Creando el recinto en 3D\u2026","picker.unavailable3d":"No se pudo iniciar la vista 3D. El mapa de asientos sigue disponible.","picker.jumpToSection":"Ir a una secci\xF3n","picker.salesClosedPill":"Las ventas est\xE1n cerradas","picker.salesClosedCopy":"La venta de entradas para este evento ha finalizado.","picker.salesClosedCta":"Venta cerrada","picker.salesClosedToast":"Las ventas de este evento est\xE1n cerradas.","picker.holdReassurance":"Tuyos durante {time} \u2014 a\xFAn no se te cobrar\xE1 nada.","picker.securingSeats":"Asegurando tus asientos\u2026","picker.openingCheckout":"Abriendo el pago seguro\u2026","picker.peekSecured":"\u2713 {count} asegurados \xB7 {total} \u2014 a\xFAn no se te cobrar\xE1 nada","picker.priceHint":"Los colores del plano son tipos de entrada \u2014 toca uno abajo para ver solo esos asientos.","picker.findTogetherInstead":"Buscar asientos juntos en su lugar","picker.keepMyPicks":"Mantener mi selecci\xF3n","picker.accessExpiredBody":"Vuelve a iniciar sesi\xF3n o recarga la p\xE1gina para seguir viendo estos asientos. Lo que ya tengas retenido seguir\xE1 siendo tuyo.","picker.accessExpiredTitle":"Tu sesi\xF3n de acceso ha finalizado","picker.accessInvalidBody":"A\xFAn puedes reservar todo lo que aparezca como disponible. Contacta a quien te envi\xF3 este enlace para acceder al resto.","picker.accessInvalidTitle":"No pudimos verificar tu acceso","picker.accessPausedBody":"El organizador ha pausado esta selecci\xF3n. Int\xE9ntalo de nuevo en unos minutos.","picker.accessPausedTitle":"Estos asientos est\xE1n retenidos en este momento","picker.accessRetry":"Intentar de nuevo","picker.accessRevokedBody":"Pide a quien te envi\xF3 aqu\xED un nuevo enlace para seguir reservando estos asientos.","picker.accessRevokedTitle":"Este enlace de acceso ya no est\xE1 activo","picker.accessiblePhysicalSeat":"Asiento f\xEDsico accesible","picker.addTime":"A\xF1adir tiempo","picker.addingEllipsis":"A\xF1adiendo\u2026","picker.allLevels":"Todos los niveles","picker.allPlacesBookedTogether":"Los {count} lugares se reservan juntos como una mesa exclusiva.","picker.allPrices":"Todos los precios","picker.allSeats":"Todos los asientos","picker.allSetTitle":"Todo listo","picker.anyTicketType":"Cualquier tipo de entrada","picker.anyVenueZone":"Cualquier zona del recinto","picker.areas":"Zonas","picker.available":"Disponible","picker.backToMap":"Volver al mapa","picker.backToVenue":"Volver al recinto","picker.bestSeatsStar":"\u2726 Mejores asientos","picker.booth":"Palco","picker.capacityGuests":"{count} invitados","picker.change":"Cambiar","picker.chartDerivedModel":"Modelo derivado del plano","picker.chartDerivedSeatEye":"3D en vivo \xB7 vista desde el asiento derivada del plano \xB7 no verificada","picker.checkConnection":"Comprueba tu conexi\xF3n e int\xE9ntalo de nuevo.","picker.checkoutCouldNotBeOpened":"No se pudo abrir el pago. Tus asientos siguen retenidos \u2014 int\xE9ntalo de nuevo.","picker.chooseAnotherToCompare":"Elige otro asiento para comparar.","picker.chooseGuestsCopy":"Elige cu\xE1ntos invitados se sentar\xE1n juntos. Esta mesa est\xE1 reservada en exclusiva para tu grupo.","picker.chooseMinMaxGuests":"Elige entre {min} y {max} invitados","picker.clearSavedSeatComparison":"Borrar comparaci\xF3n de asientos guardada","picker.close":"Cerrar","picker.closeSeatStatus":"Cerrar estado del asiento","picker.closestGroupChosenInstantly":"El grupo disponible m\xE1s cercano, elegido al instante.","picker.collapseTicketPanel":"Contraer el panel de entradas","picker.compareCount":"Comparar {count}","picker.compareWithSaved":"Comparar con el guardado","picker.confirmOrCancelSeat":"Confirma o cancela este asiento","picker.confirmSeatLabel":"Confirmar asiento {label}","picker.confirmYourTable":"Confirma tu mesa","picker.confirmedAndOnWay":"confirmados. Una confirmaci\xF3n est\xE1 en camino.","picker.continue":"Continuar","picker.continueToCheckout":"Continuar al pago","picker.couldNotAddMoreTime":"No se pudo a\xF1adir m\xE1s tiempo \u2014 dir\xEDgete al pago ahora.","picker.couldNotFindSeatsTogether":"No pudimos encontrar {count} asientos juntos. Prueba con menos asientos u otro tipo de entrada.","picker.couldNotReleaseTickets":"No se pudieron liberar tus entradas. Tu retenci\xF3n no ha cambiado.","picker.couldNotRemoveLabel":"No se pudo quitar {label}. Tu retenci\xF3n no ha cambiado.","picker.currentOffer":"Oferta actual","picker.currentTicketOffer":"Oferta de entradas actual","picker.dragToLookAround":"Arrastra para mirar alrededor \xB7 despl\xE1zate para hacer zoom","picker.emptyWheelchairSpace":"Espacio vac\xEDo para silla de ruedas","picker.exitFullScreen":"Salir de pantalla completa","picker.fewer":"Menos","picker.fewerGuests":"Menos invitados","picker.fewerSeats":"Menos asientos","picker.filterAndFocusByPrice":"Filtrar y enfocar asientos por precio","picker.filters":"Filtros","picker.findBestSeatsCount.one":"Buscar {count} mejor asiento","picker.findBestSeatsCount.other":"Buscar {count} mejores asientos","picker.findBestSeatsTogether":"Buscar los mejores asientos juntos","picker.findNewSeats":"Buscar nuevos asientos","picker.findingBestSeats":"Buscando los mejores asientos\u2026","picker.findingEllipsis":"Buscando\u2026","picker.fitToScreen":"Ajustar a la pantalla","picker.flat2dMap":"Mapa plano 2D","picker.flexiblePartyTypeWord":"Grupo flexible \xB7 {typeWord}","picker.fullScreen":"Pantalla completa","picker.generalAdmission":"Entrada general","picker.guestCountCouldNotBeSecured":"No se pudo asegurar ese n\xFAmero de invitados. Tu retenci\xF3n de mesa actual no ha cambiado.","picker.guestCountNoLongerAvailable":"Ese n\xFAmero de invitados ya no est\xE1 disponible. Tu retenci\xF3n actual no ha cambiado.","picker.guests":"Invitados","picker.guestsCount":"{count} invitados","picker.guestsCountEdit":"{count} invitados \xB7 Editar","picker.held":"Retenido","picker.heldForYou":"Retenido para ti","picker.heldSeatExplanation":"Otro comprador est\xE1 reteniendo este asiento. Puede volver a estar disponible.","picker.heldTicketsReleased":"Se liberaron las entradas retenidas. Elige tus nuevos asientos.","picker.heldTicketsRestored":"Tus entradas retenidas se han restaurado.","picker.hidePanel":"Ocultar panel","picker.hideTicketPanel":"Ocultar el panel de entradas","picker.holdSeatsAndCheckout":"Retener asientos y pagar","picker.howOfferWorks":"C\xF3mo funciona la oferta \xAB{name}\xBB","picker.interactive3dVenueView":"Vista 3D interactiva del recinto","picker.keepMine":"Mantener los m\xEDos","picker.labelNoLongerAvailable":"{label} ya no est\xE1 disponible.","picker.labelRemoved":"{label} eliminado.","picker.labelRemovedFromHold":"{label} eliminado de tu retenci\xF3n.","picker.labelRestored":"{label} restaurado.","picker.labelsNoLongerAvailable.one":"{labels} ya no est\xE1 disponible. Elige otro asiento.","picker.labelsNoLongerAvailable.other":"{labels} ya no est\xE1n disponibles. Elige otro grupo.","picker.leftCount.one":"quedan {count}","picker.leftCount.other":"quedan {count}","picker.levelNumber":"Nivel {number}","picker.levels":"Niveles","picker.liveAvailability":"Disponibilidad en vivo \u2014 los asientos se actualizan en tiempo real","picker.loadingSeatMap":"Cargando el mapa de asientos\u2026","picker.lookAroundLive3d":"Mirar alrededor en 3D en vivo","picker.manualTicketsRemovedNote":"Tus entradas seleccionadas manualmente solo se eliminar\xE1n una vez que se asegure un nuevo grupo.","picker.map":"Mapa","picker.mapDidNotLoad":"El mapa de asientos no se pudo cargar","picker.maxTicketsForOrder":"Puedes seleccionar hasta {count} entradas para este pedido.","picker.selectExactMore":"Selecciona {count} m\xE1s","picker.selectExactCount":"Selecciona exactamente {count} entradas","picker.selectMinimumMore":"Selecciona {count} m\xE1s","picker.adjustSeatSelection":"Ajusta la selecci\xF3n de asientos","picker.selectSeatsTogether":"Elige asientos juntos en la misma fila y categor\xEDa.","picker.minToMaxGuests":"De {min} a {max} invitados","picker.more":"M\xE1s","picker.moreGuests":"M\xE1s invitados","picker.moreSeats":"M\xE1s asientos","picker.moreSelectedCount":"{count} m\xE1s seleccionados","picker.moreTimeAdded":"Se a\xF1adi\xF3 m\xE1s tiempo \u2014 tus asientos siguen retenidos.","picker.noAccessibilityMetadata":"No hay informaci\xF3n de accesibilidad disponible","picker.noAuthoredRestriction":"Sin restricci\xF3n indicada por el organizador","picker.noSeatsSelected":"Ning\xFAn asiento seleccionado","picker.notChargedYet":"A\xFAn no se te cobrar\xE1 nada.","picker.notForSale":"No est\xE1 a la venta","picker.notForSaleExplanation":"Este asiento no est\xE1 incluido en la venta actual.","picker.numberOfGuests":"N\xFAmero de invitados","picker.offerDetailActive":"Este precio se aplica autom\xE1ticamente a los asientos elegibles. Las entradas en carritos activos reducen temporalmente la cantidad disponible; las retenciones liberadas o vencidas la devuelven. Cuando la oferta termine, se aplicar\xE1 la siguiente oferta coincidente o el precio normal de la entrada.","picker.offerDetailUpcoming":"Las entradas est\xE1n disponibles ahora a su precio normal. Esta oferta programada se aplicar\xE1 autom\xE1ticamente a los asientos elegibles cuando comience.","picker.offerRemainingAvailable":"{count} disponibles","picker.offerStarts":"comienza {time}","picker.offerUntil":"hasta {time}","picker.oneSeatSaved":"1 asiento guardado","picker.oneSeatSavedChooseAnother":"Un asiento guardado; elige otro para comparar","picker.openAuthored360":"Abrir vista 360\xB0 del recinto","picker.openComparison":"Abrir comparaci\xF3n","picker.openComparisonOfSeats":"Abrir comparaci\xF3n de {count} asientos","picker.openTicketPanel":"Abrir el panel de entradas","picker.peekFromPrice":"Desde {price}","picker.peekTicketsTotal.one":"{count} entrada \xB7 {total}","picker.peekTicketsTotal.other":"{count} entradas \xB7 {total}","picker.perGuestPrice":"{price} por invitado","picker.pickYourSeats":"Elige tus asientos","picker.preferredTicketType":"Tipo de entrada preferido","picker.preferredVenueZone":"Zona del recinto preferida","picker.priceNotSupplied":"Precio no indicado","picker.releaseHeldTickets":"Liberar entradas retenidas y elegir otros asientos","picker.releasingEllipsis":"Liberando\u2026","picker.removeHeldTicketLabel":"Quitar entrada retenida {label}","picker.removeSeatLabel":"Quitar {label}","picker.removeTicketsUntilOrFewer":"Quita entradas hasta que tu pedido tenga {count} o menos.","picker.replaceCurrentChoices":"\xBFReemplazar tu selecci\xF3n actual?","picker.review":"Revisar","picker.row":"Fila","picker.rowLabel":"Fila {label}","picker.saveToCompare":"Guardar para comparar","picker.savedForComparison":"Guardado para comparar","picker.savedSeatComparison":"Comparaci\xF3n de asientos guardada","picker.scheduledOffer":"Oferta programada","picker.seat":"Asiento","picker.seatCount.one":"{count} asiento","picker.seatCount.other":"{count} asientos","picker.seatJustTakenByAnother":"El asiento {label} acaba de ser tomado por otro comprador.","picker.seatLabel":"Asiento {label}","picker.seatNoLongerAvailable":"Ese asiento ya no est\xE1 disponible.","picker.seatNoLongerYours":"Algunos asientos ya no est\xE1n disponibles para ti. Se han eliminado de tu pedido.","picker.seatNumberLower":"asiento {label}","picker.seatSalesClosedForEvent":"La venta de asientos para este evento ha finalizado.","picker.seatSelection":"Selecci\xF3n de asientos","picker.seatStatusLegend":"Leyenda del estado de los asientos","picker.seatTaken":"Otro comprador tom\xF3 un asiento que hab\xEDas elegido. Se ha eliminado de tu pedido.","picker.seatsHeldForNeedMoreTime":"Tus asientos est\xE1n retenidos durante <b>{time}</b>. \xBFNecesitas m\xE1s tiempo?","picker.seatsJustTaken":"Se acaban de ocupar uno o m\xE1s asientos. Vuelve a elegir.","picker.seatsJustTakenInCategory.one":"{count} asiento reci\xE9n ocupado en {label} \xB7 quedan {left}","picker.seatsJustTakenInCategory.other":"{count} asientos reci\xE9n ocupados en {label} \xB7 quedan {left}","picker.seatsNoLongerAvailableTryAnother":"Esos asientos ya no est\xE1n disponibles. Prueba otra cantidad o tipo de entrada.","picker.seatsSecured":"Asientos asegurados","picker.seatsSelectedCount.one":"{count} seleccionado","picker.seatsSelectedCount.other":"{count} seleccionados","picker.section":"Secci\xF3n","picker.secureMore":"Asegurar m\xE1s","picker.secureMoreAndCheckout":"Asegurar {count} m\xE1s y pagar","picker.securedCount":"{count} asegurados","picker.seeItIn3d":"Verlo en 3D","picker.select":"Seleccionar","picker.selectSeats":"Seleccionar asientos","picker.selectTable":"Seleccionar mesa","picker.selectWholeTable":"Seleccionar mesa completa","picker.selected":"Seleccionado","picker.selectingEllipsis":"Seleccionando\u2026","picker.showAllSeats":"Mostrar todos los asientos","picker.showAllTicketTypes":"Mostrar los {count} tipos de entrada","picker.showFewer":"Mostrar menos","picker.showLabelSeatsOnMap":"Mostrar los asientos de {label} en el mapa","picker.showTicketPanel":"Mostrar el panel de entradas","picker.sold":"Vendido","picker.soldOutCopy":"No hay asientos reservados disponibles actualmente para este evento.","picker.soldOutEyebrow":"Este evento","picker.soldOutTitle":"Agotado","picker.soldSeatExplanation":"Este asiento ya ha sido reservado.","picker.statusAvailable":"disponible","picker.statusOnHold":"en espera","picker.statusTaken2":"ocupado","picker.table":"Mesa","picker.tableCapacity":"Capacidad de la mesa","picker.tableUpdatedForGuests":"{label} actualizado para {count} invitados.","picker.temporarilyHeld":"Retenido temporalmente","picker.ticketPrices":"Precios de entradas","picker.ticketTypeSoldOut":"Ese tipo de entrada est\xE1 agotado. Prueba con otro tipo de entrada.","picker.tickets":"Entradas","picker.ticketsCount.one":"{count} entrada","picker.ticketsCount.other":"{count} entradas","picker.toggleColorblindColors":"Alternar colores para dalt\xF3nicos","picker.total":"Total","picker.trayHintTapOrBest":"Toca un asiento en el mapa, o deja que elijamos los mejores disponibles por ti.","picker.trayHintTapOrStanding":"Toca un asiento en el mapa \u2014 o consigue entradas de pie abajo.","picker.undo":"Deshacer","picker.upcomingTicketOffer":"Pr\xF3xima oferta de entradas","picker.updateTable":"Actualizar mesa","picker.updatingEllipsis":"Actualizando\u2026","picker.venueView":"Vista del recinto","picker.viewFromHere":"Vista desde aqu\xED","picker.viewFromThisSeat":"Vista desde este asiento","picker.wholeTypeWord":"{typeWord} completo","picker.willChooseClosestGroup":"Elegiremos el grupo disponible m\xE1s cercano por ti.","picker.willFindSeatsTogether":"Buscaremos {count} asientos juntos.","picker.yourSeats":"Tus asientos","picker.zoomIn":"Acercar","picker.zoomOut":"Alejar","picker.closeVenueNav":"Cerrar","picker.levelsAndAreas":"Niveles y zonas"}});var us={};Rt(us,{de:()=>Al});var Al,hs=ki(()=>{"use strict";Al={"common.cancel":"Abbrechen","common.close":"Schlie\xDFen","common.done":"Fertig","common.copied":"\u2713 Kopiert","picker.holdExpired":"Ihre Reservierung ist abgelaufen \u2014 die Pl\xE4tze wurden freigegeben. Bitte erneut ausw\xE4hlen.","picker.poweredBy":"Bereitgestellt von SeatLayer","picker.testMode":"TESTMODUS","picker.orphanHint":"Dadurch bleibt ein einzelner Platz \xFCbrig \u2014 r\xFCcken Sie ggf. einen Platz weiter.","picker.companionRequiresWheelchair":"Benachbarter Rollstuhlplatz erforderlich","picker.companionPairRequired":"W\xE4hlen Sie zu jedem Begleitticket den benachbarten Rollstuhlplatz aus.","map.aria":"Sitzplan. Mit Pfeiltasten zwischen Pl\xE4tzen navigieren, Eingabe zum Ausw\xE4hlen.","map.seatsLeft":"{count} FREI","map.soldOut":"AUSVERKAUFT","map.statusHeld":"Reserviert","map.statusTaken":"Vergeben","map.fromPrice":"AB {price}","picker.floor":"Etage","picker.zoomLevel":"Zoomstufe","picker.rungTip.zones":"\xDCbersicht \u2014 Bereichsgruppen wie Nordtrib\xFCne oder VIP","picker.rungTip.sections":"Bereichs-Bl\xF6cke \u2014 ausverkaufte und fast volle Bereiche werden abgedunkelt, um die Verf\xFCgbarkeit auf einen Blick zu zeigen","picker.rungTip.seats":"Einzelne Pl\xE4tze \u2014 Bl\xF6cke l\xF6sen sich zu Punkten auf","picker.rungLabel.zones":"ZONEN","picker.rungLabel.sections":"BEREICHE","picker.rungLabel.seats":"PL\xC4TZE","picker.sectionSummaryAria":"Bereichszusammenfassung {label}","picker.closeSectionSummary":"Bereichszusammenfassung schlie\xDFen","picker.seatsLeftInSection.one":"{count} Platz verf\xFCgbar","picker.seatsLeftInSection.other":"{count} Pl\xE4tze verf\xFCgbar","picker.overview":"\xDCbersicht","picker.entrance":"Eingang","picker.tapSeatHint":"Tippen Sie auf einen Platz, um die Ansicht zu pr\xFCfen","picker.ticketTierFor":"Ticketklasse f\xFCr {label}","picker.viewFromSeat":"Ansicht von Platz {label}","picker.real360":"REAL 360\xB0","picker.preview":"VORSCHAU","picker.sightline":"\u2248 {m} m zur B\xFChne","picker.panorama360":"360\xB0-Veranstaltungsfotos","picker.illustrationCaption":"Illustration \xB7 \u2248 {m} m von der B\xFChne","picker.restrictedView":"Eingeschr\xE4nkte Sicht","picker.obstructedView":"Sichtbehinderung","picker.premiumSeat":"Premium-Platz","picker.hideLimitedView":"Pl\xE4tze mit eingeschr\xE4nkter Sicht ausblenden","picker.bestSeatsPremium":"Beste Pl\xE4tze","picker.premiumFallbackNote":"Kein Premium-Block mit {count} Pl\xE4tzen \u2014 beste verf\xFCgbare werden angezeigt","picker.loading3d":"3D-Veranstaltungsort wird aufgebaut\u2026","picker.unavailable3d":"3D konnte nicht gestartet werden. Der Sitzplan bleibt verf\xFCgbar.","picker.jumpToSection":"Zum Bereich springen","picker.salesClosedPill":"Der Verkauf ist beendet","picker.salesClosedCopy":"Der Ticketverkauf f\xFCr diese Veranstaltung ist beendet.","picker.salesClosedCta":"Verkauf beendet","picker.salesClosedToast":"Der Verkauf f\xFCr diese Veranstaltung ist beendet.","picker.holdReassurance":"F\xFCr {time} reserviert \u2014 noch wird nichts abgebucht.","picker.securingSeats":"Ihre Pl\xE4tze werden gesichert\u2026","picker.openingCheckout":"Sicherer Checkout wird ge\xF6ffnet\u2026","picker.peekSecured":"\u2713 {count} gesichert \xB7 {total} \u2014 noch wird nichts abgebucht","picker.priceHint":"Die Farben auf dem Plan sind Ticketkategorien \u2014 tippen Sie eine an, um nur diese Pl\xE4tze zu sehen.","picker.findTogetherInstead":"Stattdessen Pl\xE4tze nebeneinander finden","picker.keepMyPicks":"Meine Auswahl behalten","picker.accessExpiredBody":"Melden Sie sich erneut an oder laden Sie die Seite neu, um diese Pl\xE4tze weiter durchzusehen. Bereits gehaltene Pl\xE4tze bleiben Ihnen erhalten.","picker.accessExpiredTitle":"Ihre Zugangssitzung ist beendet","picker.accessInvalidBody":"Sie k\xF6nnen weiterhin alles buchen, was als verf\xFCgbar angezeigt wird. Wenden Sie sich f\xFCr Zugang zum Rest an die Person, die Ihnen den Link geschickt hat.","picker.accessInvalidTitle":"Ihr Zugang konnte nicht best\xE4tigt werden","picker.accessPausedBody":"Der Veranstalter hat diese Auswahl pausiert. Versuchen Sie es in ein paar Minuten erneut.","picker.accessPausedTitle":"Diese Pl\xE4tze sind gerade reserviert","picker.accessRetry":"Erneut versuchen","picker.accessRevokedBody":"Bitten Sie die Person, die Ihnen diesen Link geschickt hat, um einen neuen, um weiter buchen zu k\xF6nnen.","picker.accessRevokedTitle":"Dieser Zugangslink ist nicht mehr aktiv","picker.accessiblePhysicalSeat":"Barrierefreier fester Sitzplatz","picker.addTime":"Zeit hinzuf\xFCgen","picker.addingEllipsis":"Wird hinzugef\xFCgt\u2026","picker.allLevels":"Alle Ebenen","picker.allPlacesBookedTogether":"Alle {count} Pl\xE4tze werden gemeinsam als ein exklusiver Tisch gebucht.","picker.allPrices":"Alle Preise","picker.allSeats":"Alle Pl\xE4tze","picker.allSetTitle":"Alles bereit","picker.anyTicketType":"Beliebige Ticketart","picker.anyVenueZone":"Beliebiger Bereich","picker.areas":"Bereiche","picker.available":"Verf\xFCgbar","picker.backToMap":"Zur\xFCck zur Karte","picker.backToVenue":"Zur\xFCck zur \xDCbersicht","picker.bestSeatsStar":"\u2726 Beste Pl\xE4tze","picker.booth":"Loge","picker.capacityGuests":"{count} G\xE4ste","picker.change":"\xC4ndern","picker.chartDerivedModel":"Aus dem Plan abgeleitetes Modell","picker.chartDerivedSeatEye":"Live-3D \xB7 aus dem Plan abgeleitete Sitzperspektive \xB7 nicht vermessen","picker.checkConnection":"Bitte \xFCberpr\xFCfen Sie Ihre Verbindung und versuchen Sie es erneut.","picker.checkoutCouldNotBeOpened":"Der Checkout konnte nicht ge\xF6ffnet werden. Ihre Pl\xE4tze sind weiterhin reserviert \u2014 bitte versuchen Sie es erneut.","picker.chooseAnotherToCompare":"W\xE4hlen Sie einen weiteren Platz zum Vergleichen.","picker.chooseGuestsCopy":"W\xE4hlen Sie, wie viele G\xE4ste zusammensitzen. Dieser Tisch ist exklusiv f\xFCr Ihre Gruppe reserviert.","picker.chooseMinMaxGuests":"W\xE4hlen Sie {min}\u2013{max} G\xE4ste","picker.clearSavedSeatComparison":"Gespeicherten Sitzvergleich l\xF6schen","picker.close":"Schlie\xDFen","picker.closeSeatStatus":"Sitzstatus schlie\xDFen","picker.closestGroupChosenInstantly":"N\xE4chstgelegene verf\xFCgbare Gruppe, sofort ausgew\xE4hlt.","picker.collapseTicketPanel":"Ticketbereich einklappen","picker.compareCount":"{count} vergleichen","picker.compareWithSaved":"Mit Gespeichertem vergleichen","picker.confirmOrCancelSeat":"Diesen Platz best\xE4tigen oder abbrechen","picker.confirmSeatLabel":"Platz {label} best\xE4tigen","picker.confirmYourTable":"Ihren Tisch best\xE4tigen","picker.confirmedAndOnWay":"best\xE4tigt. Eine Best\xE4tigung ist unterwegs.","picker.continue":"Weiter","picker.continueToCheckout":"Weiter zum Checkout","picker.couldNotAddMoreTime":"Zus\xE4tzliche Zeit konnte nicht hinzugef\xFCgt werden \u2014 bitte jetzt zum Checkout gehen.","picker.couldNotFindSeatsTogether":"Wir konnten keine {count} zusammenh\xE4ngenden Pl\xE4tze finden. Versuchen Sie es mit weniger Pl\xE4tzen oder einer anderen Ticketart.","picker.couldNotReleaseTickets":"Ihre Tickets konnten nicht freigegeben werden. Ihre Reservierung bleibt unver\xE4ndert.","picker.couldNotRemoveLabel":"{label} konnte nicht entfernt werden. Ihre Reservierung bleibt unver\xE4ndert.","picker.currentOffer":"Aktuelles Angebot","picker.currentTicketOffer":"Aktuelles Ticketangebot","picker.dragToLookAround":"Ziehen zum Umsehen \xB7 Scrollen zum Zoomen","picker.emptyWheelchairSpace":"Leerer Rollstuhlplatz","picker.exitFullScreen":"Vollbild verlassen","picker.fewer":"Weniger","picker.fewerGuests":"Weniger G\xE4ste","picker.fewerSeats":"Weniger Pl\xE4tze","picker.filterAndFocusByPrice":"Pl\xE4tze nach Preis filtern und fokussieren","picker.filters":"Filter","picker.findBestSeatsCount.one":"{count} besten Platz finden","picker.findBestSeatsCount.other":"{count} beste Pl\xE4tze finden","picker.findBestSeatsTogether":"Die besten Pl\xE4tze zusammen finden","picker.findNewSeats":"Neue Pl\xE4tze finden","picker.findingBestSeats":"Beste Pl\xE4tze werden gesucht\u2026","picker.findingEllipsis":"Wird gesucht\u2026","picker.fitToScreen":"An Bildschirm anpassen","picker.flat2dMap":"Flache 2D-Karte","picker.flexiblePartyTypeWord":"Flexible Gruppe \xB7 {typeWord}","picker.fullScreen":"Vollbild","picker.generalAdmission":"Stehplatz","picker.guestCountCouldNotBeSecured":"Diese G\xE4steanzahl konnte nicht gesichert werden. Ihre aktuelle Tischreservierung bleibt unver\xE4ndert.","picker.guestCountNoLongerAvailable":"Diese G\xE4steanzahl ist nicht mehr verf\xFCgbar. Ihre aktuelle Reservierung bleibt unver\xE4ndert.","picker.guests":"G\xE4ste","picker.guestsCount":"{count} G\xE4ste","picker.guestsCountEdit":"{count} G\xE4ste \xB7 Bearbeiten","picker.held":"Reserviert","picker.heldForYou":"F\xFCr Sie reserviert","picker.heldSeatExplanation":"Ein anderer K\xE4ufer h\xE4lt diesen Platz gerade. Er k\xF6nnte wieder verf\xFCgbar werden.","picker.heldTicketsReleased":"Reservierte Tickets wurden freigegeben. W\xE4hlen Sie neue Pl\xE4tze.","picker.heldTicketsRestored":"Ihre reservierten Tickets wurden wiederhergestellt.","picker.hidePanel":"Bereich ausblenden","picker.hideTicketPanel":"Ticketbereich ausblenden","picker.holdSeatsAndCheckout":"Pl\xE4tze reservieren & zum Checkout","picker.howOfferWorks":"So funktioniert das Angebot \u201E{name}\u201C","picker.interactive3dVenueView":"Interaktive 3D-Ansicht des Veranstaltungsorts","picker.keepMine":"Meine behalten","picker.labelNoLongerAvailable":"{label} ist nicht mehr verf\xFCgbar.","picker.labelRemoved":"{label} entfernt.","picker.labelRemovedFromHold":"{label} aus Ihrer Reservierung entfernt.","picker.labelRestored":"{label} wiederhergestellt.","picker.labelsNoLongerAvailable.one":"{labels} ist nicht mehr verf\xFCgbar. W\xE4hlen Sie einen anderen Platz.","picker.labelsNoLongerAvailable.other":"{labels} sind nicht mehr verf\xFCgbar. W\xE4hlen Sie eine andere Gruppe.","picker.leftCount.one":"noch {count}","picker.leftCount.other":"noch {count}","picker.levelNumber":"Ebene {number}","picker.levels":"Ebenen","picker.liveAvailability":"Live-Verf\xFCgbarkeit \u2014 Pl\xE4tze aktualisieren sich in Echtzeit","picker.loadingSeatMap":"Sitzplan wird geladen\u2026","picker.lookAroundLive3d":"In Live-3D umsehen","picker.manualTicketsRemovedNote":"Ihre manuell gew\xE4hlten Tickets werden erst entfernt, nachdem eine neue Gruppe gesichert wurde.","picker.map":"Karte","picker.mapDidNotLoad":"Der Sitzplan konnte nicht geladen werden","picker.maxTicketsForOrder":"Sie k\xF6nnen f\xFCr diese Bestellung bis zu {count} Tickets ausw\xE4hlen.","picker.selectExactMore":"Noch {count} ausw\xE4hlen","picker.selectExactCount":"Genau {count} Tickets ausw\xE4hlen","picker.selectMinimumMore":"Noch {count} ausw\xE4hlen","picker.adjustSeatSelection":"Sitzauswahl anpassen","picker.selectSeatsTogether":"W\xE4hlen Sie zusammenh\xE4ngende Pl\xE4tze in derselben Reihe und Kategorie.","picker.minToMaxGuests":"{min} bis {max} G\xE4ste","picker.more":"Mehr","picker.moreGuests":"Mehr G\xE4ste","picker.moreSeats":"Mehr Pl\xE4tze","picker.moreSelectedCount":"{count} weitere ausgew\xE4hlt","picker.moreTimeAdded":"Zus\xE4tzliche Zeit hinzugef\xFCgt \u2014 Ihre Pl\xE4tze sind weiterhin reserviert.","picker.noAccessibilityMetadata":"Keine Barrierefreiheits-Angaben vorhanden","picker.noAuthoredRestriction":"Keine vom Veranstalter angegebene Einschr\xE4nkung","picker.noSeatsSelected":"Keine Pl\xE4tze ausgew\xE4hlt","picker.notChargedYet":"Es wird noch nichts abgebucht.","picker.notForSale":"Nicht verk\xE4uflich","picker.notForSaleExplanation":"Dieser Platz ist im aktuellen Verkauf nicht enthalten.","picker.numberOfGuests":"Anzahl der G\xE4ste","picker.offerDetailActive":"Dieser Preis gilt automatisch f\xFCr berechtigte Pl\xE4tze. Tickets in aktiven Warenk\xF6rben verringern vor\xFCbergehend die verf\xFCgbare Menge; freigegebene oder abgelaufene Reservierungen geben sie zur\xFCck. Wenn das Angebot endet, greift das n\xE4chste passende Angebot oder der regul\xE4re Ticketpreis.","picker.offerDetailUpcoming":"Tickets sind derzeit zum regul\xE4ren Preis erh\xE4ltlich. Dieses geplante Angebot gilt automatisch f\xFCr berechtigte Pl\xE4tze, sobald es beginnt.","picker.offerRemainingAvailable":"{count} verf\xFCgbar","picker.offerStarts":"beginnt {time}","picker.offerUntil":"bis {time}","picker.oneSeatSaved":"1 Platz gespeichert","picker.oneSeatSavedChooseAnother":"Ein Platz gespeichert; w\xE4hlen Sie einen weiteren zum Vergleichen","picker.openAuthored360":"360\xB0-Ansicht des Veranstaltungsorts \xF6ffnen","picker.openComparison":"Vergleich \xF6ffnen","picker.openComparisonOfSeats":"Vergleich von {count} Pl\xE4tzen \xF6ffnen","picker.openTicketPanel":"Ticketbereich \xF6ffnen","picker.peekFromPrice":"Ab {price}","picker.peekTicketsTotal.one":"{count} Ticket \xB7 {total}","picker.peekTicketsTotal.other":"{count} Tickets \xB7 {total}","picker.perGuestPrice":"{price} pro Gast","picker.pickYourSeats":"W\xE4hlen Sie Ihre Pl\xE4tze","picker.preferredTicketType":"Bevorzugte Ticketart","picker.preferredVenueZone":"Bevorzugter Bereich","picker.priceNotSupplied":"Preis nicht angegeben","picker.releaseHeldTickets":"Reservierte Tickets freigeben und andere Pl\xE4tze w\xE4hlen","picker.releasingEllipsis":"Wird freigegeben\u2026","picker.removeHeldTicketLabel":"Reserviertes Ticket {label} entfernen","picker.removeSeatLabel":"{label} entfernen","picker.removeTicketsUntilOrFewer":"Entfernen Sie Tickets, bis Ihre Bestellung {count} oder weniger enth\xE4lt.","picker.replaceCurrentChoices":"Ihre aktuelle Auswahl ersetzen?","picker.review":"\xDCberpr\xFCfen","picker.row":"Reihe","picker.rowLabel":"Reihe {label}","picker.saveToCompare":"Zum Vergleich speichern","picker.savedForComparison":"Zum Vergleich gespeichert","picker.savedSeatComparison":"Gespeicherter Sitzvergleich","picker.scheduledOffer":"Geplantes Angebot","picker.seat":"Platz","picker.seatCount.one":"{count} Platz","picker.seatCount.other":"{count} Pl\xE4tze","picker.seatJustTakenByAnother":"Platz {label} wurde gerade von einem anderen K\xE4ufer \xFCbernommen.","picker.seatLabel":"Platz {label}","picker.seatNoLongerAvailable":"Dieser Platz ist nicht mehr verf\xFCgbar.","picker.seatNoLongerYours":"Einige Pl\xE4tze sind f\xFCr Sie nicht mehr verf\xFCgbar. Sie wurden aus Ihrer Bestellung entfernt.","picker.seatNumberLower":"Platz {label}","picker.seatSalesClosedForEvent":"Der Ticketverkauf f\xFCr diese Veranstaltung ist beendet.","picker.seatSelection":"Sitzplatzauswahl","picker.seatStatusLegend":"Legende zum Sitzstatus","picker.seatTaken":"Ein anderer K\xE4ufer hat einen von Ihnen gew\xE4hlten Platz \xFCbernommen. Er wurde aus Ihrer Bestellung entfernt.","picker.seatsHeldForNeedMoreTime":"Ihre Pl\xE4tze sind f\xFCr <b>{time}</b> reserviert. Mehr Zeit ben\xF6tigt?","picker.seatsJustTaken":"Ein oder mehrere Pl\xE4tze wurden gerade vergeben. Bitte w\xE4hlen Sie erneut.","picker.seatsJustTakenInCategory.one":"{count} Platz gerade vergeben in {label} \xB7 noch {left}","picker.seatsJustTakenInCategory.other":"{count} Pl\xE4tze gerade vergeben in {label} \xB7 noch {left}","picker.seatsNoLongerAvailableTryAnother":"Diese Pl\xE4tze sind nicht mehr verf\xFCgbar. Versuchen Sie eine andere Anzahl oder Ticketart.","picker.seatsSecured":"Pl\xE4tze gesichert","picker.seatsSelectedCount.one":"{count} ausgew\xE4hlt","picker.seatsSelectedCount.other":"{count} ausgew\xE4hlt","picker.section":"Bereich","picker.secureMore":"Mehr sichern","picker.secureMoreAndCheckout":"{count} weitere sichern & zum Checkout","picker.securedCount":"{count} gesichert","picker.seeItIn3d":"In 3D ansehen","picker.select":"Ausw\xE4hlen","picker.selectSeats":"Pl\xE4tze ausw\xE4hlen","picker.selectTable":"Tisch ausw\xE4hlen","picker.selectWholeTable":"Ganzen Tisch ausw\xE4hlen","picker.selected":"Ausgew\xE4hlt","picker.selectingEllipsis":"Wird ausgew\xE4hlt\u2026","picker.showAllSeats":"Alle Pl\xE4tze anzeigen","picker.showAllTicketTypes":"Alle {count} Ticketarten anzeigen","picker.showFewer":"Weniger anzeigen","picker.showLabelSeatsOnMap":"{label}-Pl\xE4tze auf der Karte anzeigen","picker.showTicketPanel":"Ticketbereich anzeigen","picker.sold":"Verkauft","picker.soldOutCopy":"F\xFCr diese Veranstaltung sind derzeit keine reservierten Pl\xE4tze verf\xFCgbar.","picker.soldOutEyebrow":"Diese Veranstaltung","picker.soldOutTitle":"Ausverkauft","picker.soldSeatExplanation":"Dieser Platz wurde bereits gebucht.","picker.statusAvailable":"verf\xFCgbar","picker.statusOnHold":"reserviert","picker.statusTaken2":"vergeben","picker.table":"Tisch","picker.tableCapacity":"Tischkapazit\xE4t","picker.tableUpdatedForGuests":"{label} auf {count} G\xE4ste aktualisiert.","picker.temporarilyHeld":"Vor\xFCbergehend reserviert","picker.ticketPrices":"Ticketpreise","picker.ticketTypeSoldOut":"Diese Ticketart ist ausverkauft. Versuchen Sie eine andere Ticketart.","picker.tickets":"Tickets","picker.ticketsCount.one":"{count} Ticket","picker.ticketsCount.other":"{count} Tickets","picker.toggleColorblindColors":"Farbenblindenfreundliche Farben umschalten","picker.total":"Gesamt","picker.trayHintTapOrBest":"Tippen Sie auf einen Platz in der Karte, oder lassen Sie uns die besten verf\xFCgbaren f\xFCr Sie w\xE4hlen.","picker.trayHintTapOrStanding":"Tippen Sie auf einen Platz in der Karte \u2014 oder holen Sie sich unten Stehplatztickets.","picker.undo":"R\xFCckg\xE4ngig","picker.upcomingTicketOffer":"Bevorstehendes Ticketangebot","picker.updateTable":"Tisch aktualisieren","picker.updatingEllipsis":"Wird aktualisiert\u2026","picker.venueView":"Ansicht des Veranstaltungsorts","picker.viewFromHere":"Ansicht von hier","picker.viewFromThisSeat":"Ansicht von diesem Platz","picker.wholeTypeWord":"Ganzer {typeWord}","picker.willChooseClosestGroup":"Wir w\xE4hlen die n\xE4chstgelegene verf\xFCgbare Gruppe f\xFCr Sie.","picker.willFindSeatsTogether":"Wir finden {count} Pl\xE4tze zusammen f\xFCr Sie.","picker.yourSeats":"Ihre Pl\xE4tze","picker.zoomIn":"Vergr\xF6\xDFern","picker.zoomOut":"Verkleinern","picker.closeVenueNav":"Schlie\xDFen","picker.levelsAndAreas":"Ebenen & Bereiche"}});var ps={};Rt(ps,{fr:()=>Bl});var Bl,fs=ki(()=>{"use strict";Bl={"common.cancel":"Annuler","common.close":"Fermer","common.done":"Termin\xE9","common.copied":"\u2713 Copi\xE9","picker.holdExpired":"Votre r\xE9servation a expir\xE9 \u2014 les si\xE8ges ont \xE9t\xE9 lib\xE9r\xE9s. S\xE9lectionnez \xE0 nouveau.","picker.poweredBy":"Propuls\xE9 par SeatLayer","picker.testMode":"MODE TEST","picker.orphanHint":"Cela laisse un si\xE8ge isol\xE9 \u2014 pensez \xE0 vous d\xE9caler d'un si\xE8ge.","picker.companionRequiresWheelchair":"N\xE9cessite la place fauteuil roulant adjacente","picker.companionPairRequired":"S\xE9lectionnez la place fauteuil roulant adjacente avec chaque billet accompagnateur.","map.aria":"Plan de salle. Utilisez les fl\xE8ches pour naviguer entre les si\xE8ges, Entr\xE9e pour s\xE9lectionner.","map.seatsLeft":"{count} LIBRES","map.soldOut":"COMPLET","map.statusHeld":"En attente","map.statusTaken":"Pris","map.fromPrice":"D\xC8S {price}","picker.floor":"\xC9tage","picker.zoomLevel":"Niveau de zoom","picker.rungTip.zones":"Vue g\xE9n\xE9rale \u2014 groupes de sections comme Tribune nord ou VIP","picker.rungTip.sections":"Blocs de sections \u2014 les sections compl\xE8tes ou presque pleines sont estomp\xE9es pour voir la disponibilit\xE9 en un coup d\u2019\u0153il","picker.rungTip.seats":"Si\xE8ges individuels \u2014 les blocs se transforment en points","picker.rungLabel.zones":"ZONES","picker.rungLabel.sections":"SECTIONS","picker.rungLabel.seats":"SI\xC8GES","picker.sectionSummaryAria":"R\xE9sum\xE9 de la section {label}","picker.closeSectionSummary":"Fermer le r\xE9sum\xE9 de la section","picker.seatsLeftInSection.one":"{count} si\xE8ge restant","picker.seatsLeftInSection.other":"{count} si\xE8ges restants","picker.overview":"Vue d'ensemble","picker.entrance":"Entr\xE9e","picker.tapSeatHint":"Appuyez sur un si\xE8ge pour v\xE9rifier sa vue","picker.ticketTierFor":"Cat\xE9gorie de billet pour {label}","picker.viewFromSeat":"Vue depuis le si\xE8ge {label}","picker.real360":"VRAI 360\xB0","picker.preview":"APER\xC7U","picker.sightline":"\u2248 {m} m de la sc\xE8ne","picker.panorama360":"Photo panoramique 360\xB0 du lieu","picker.illustrationCaption":"illustration \xB7 \u2248 {m} m de la sc\xE8ne","picker.restrictedView":"Visibilit\xE9 r\xE9duite","picker.obstructedView":"Vue obstru\xE9e","picker.premiumSeat":"Place premium","picker.hideLimitedView":"Masquer les places \xE0 visibilit\xE9 r\xE9duite","picker.bestSeatsPremium":"Meilleures places","picker.premiumFallbackNote":"Aucun bloc premium de {count} \u2014 affichage des meilleures places disponibles","picker.loading3d":"Cr\xE9ation de la salle en 3D\u2026","picker.unavailable3d":"La 3D n\u2019a pas pu d\xE9marrer. Le plan des si\xE8ges reste disponible.","picker.jumpToSection":"Acc\xE9der \xE0 une section","picker.salesClosedPill":"Les ventes sont closes","picker.salesClosedCopy":"La vente de billets pour cet \xE9v\xE9nement est termin\xE9e.","picker.salesClosedCta":"Ventes closes","picker.salesClosedToast":"Les ventes sont closes pour cet \xE9v\xE9nement.","picker.holdReassurance":"\xC0 vous pendant {time} \u2014 vous ne serez pas encore d\xE9bit\xE9.","picker.securingSeats":"R\xE9servation de vos places\u2026","picker.openingCheckout":"Ouverture du paiement s\xE9curis\xE9\u2026","picker.peekSecured":"\u2713 {count} r\xE9serv\xE9es \xB7 {total} \u2014 vous ne serez pas encore d\xE9bit\xE9","picker.priceHint":"Les couleurs du plan correspondent aux types de billets \u2014 touchez-en un ci-dessous pour ne voir que ces places.","picker.findTogetherInstead":"Trouver plut\xF4t des places c\xF4te \xE0 c\xF4te","picker.keepMyPicks":"Garder ma s\xE9lection","picker.accessExpiredBody":"Reconnectez-vous ou rechargez la page pour continuer \xE0 consulter ces places. Ce que vous avez d\xE9j\xE0 r\xE9serv\xE9 reste \xE0 vous.","picker.accessExpiredTitle":"Votre session d\u2019acc\xE8s a pris fin","picker.accessInvalidBody":"Vous pouvez toujours r\xE9server tout ce qui est indiqu\xE9 comme disponible. Contactez la personne qui vous a envoy\xE9 ce lien pour acc\xE9der au reste.","picker.accessInvalidTitle":"Nous n\u2019avons pas pu v\xE9rifier votre acc\xE8s","picker.accessPausedBody":"L\u2019organisateur a mis cette s\xE9lection en pause. R\xE9essayez dans quelques minutes.","picker.accessPausedTitle":"Ces places sont actuellement en attente","picker.accessRetry":"R\xE9essayer","picker.accessRevokedBody":"Demandez \xE0 la personne qui vous a envoy\xE9 ce lien de vous en fournir un nouveau pour continuer \xE0 r\xE9server ces places.","picker.accessRevokedTitle":"Ce lien d\u2019acc\xE8s n\u2019est plus actif","picker.accessiblePhysicalSeat":"Si\xE8ge physique accessible","picker.addTime":"Ajouter du temps","picker.addingEllipsis":"Ajout en cours\u2026","picker.allLevels":"Tous les niveaux","picker.allPlacesBookedTogether":"Les {count} places sont r\xE9serv\xE9es ensemble comme une table exclusive.","picker.allPrices":"Tous les prix","picker.allSeats":"Toutes les places","picker.allSetTitle":"Tout est pr\xEAt","picker.anyTicketType":"Tout type de billet","picker.anyVenueZone":"Toute zone du lieu","picker.areas":"Zones","picker.available":"Disponible","picker.backToMap":"Retour au plan","picker.backToVenue":"Retour au lieu","picker.bestSeatsStar":"\u2726 Meilleures places","picker.booth":"Loge","picker.capacityGuests":"{count} invit\xE9s","picker.change":"Modifier","picker.chartDerivedModel":"Mod\xE8le d\xE9riv\xE9 du plan","picker.chartDerivedSeatEye":"3D en direct \xB7 point de vue d\xE9riv\xE9 du plan \xB7 non v\xE9rifi\xE9","picker.checkConnection":"V\xE9rifiez votre connexion et r\xE9essayez.","picker.checkoutCouldNotBeOpened":"Le paiement n\u2019a pas pu s\u2019ouvrir. Vos places sont toujours r\xE9serv\xE9es \u2014 veuillez r\xE9essayer.","picker.chooseAnotherToCompare":"Choisissez une autre place \xE0 comparer.","picker.chooseGuestsCopy":"Choisissez combien d\u2019invit\xE9s seront assis ensemble. Cette table est r\xE9serv\xE9e exclusivement \xE0 votre groupe.","picker.chooseMinMaxGuests":"Choisissez de {min} \xE0 {max} invit\xE9s","picker.clearSavedSeatComparison":"Effacer la comparaison de places enregistr\xE9e","picker.close":"Fermer","picker.closeSeatStatus":"Fermer le statut de la place","picker.closestGroupChosenInstantly":"Groupe disponible le plus proche, choisi instantan\xE9ment.","picker.collapseTicketPanel":"R\xE9duire le panneau des billets","picker.compareCount":"Comparer {count}","picker.compareWithSaved":"Comparer avec l\u2019enregistr\xE9e","picker.confirmOrCancelSeat":"Confirmer ou annuler cette place","picker.confirmSeatLabel":"Confirmer la place {label}","picker.confirmYourTable":"Confirmez votre table","picker.confirmedAndOnWay":"confirm\xE9s. Une confirmation arrive.","picker.continue":"Continuer","picker.continueToCheckout":"Continuer vers le paiement","picker.couldNotAddMoreTime":"Impossible d\u2019ajouter du temps \u2014 veuillez passer au paiement maintenant.","picker.couldNotFindSeatsTogether":"Nous n\u2019avons pas trouv\xE9 {count} places ensemble. Essayez avec moins de places ou un autre type de billet.","picker.couldNotReleaseTickets":"Impossible de lib\xE9rer vos billets. Votre r\xE9servation reste inchang\xE9e.","picker.couldNotRemoveLabel":"Impossible de retirer {label}. Votre r\xE9servation reste inchang\xE9e.","picker.currentOffer":"Offre actuelle","picker.currentTicketOffer":"Offre de billets actuelle","picker.dragToLookAround":"Faites glisser pour regarder autour \xB7 d\xE9filez pour zoomer","picker.emptyWheelchairSpace":"Emplacement vide pour fauteuil roulant","picker.exitFullScreen":"Quitter le plein \xE9cran","picker.fewer":"Moins","picker.fewerGuests":"Moins d\u2019invit\xE9s","picker.fewerSeats":"Moins de places","picker.filterAndFocusByPrice":"Filtrer et cibler les places par prix","picker.filters":"Filtres","picker.findBestSeatsCount.one":"Trouver {count} meilleure place","picker.findBestSeatsCount.other":"Trouver {count} meilleures places","picker.findBestSeatsTogether":"Trouver les meilleures places ensemble","picker.findNewSeats":"Trouver de nouvelles places","picker.findingBestSeats":"Recherche des meilleures places\u2026","picker.findingEllipsis":"Recherche\u2026","picker.fitToScreen":"Ajuster \xE0 l\u2019\xE9cran","picker.flat2dMap":"Plan 2D \xE0 plat","picker.flexiblePartyTypeWord":"Groupe flexible \xB7 {typeWord}","picker.fullScreen":"Plein \xE9cran","picker.generalAdmission":"Entr\xE9e g\xE9n\xE9rale","picker.guestCountCouldNotBeSecured":"Ce nombre d\u2019invit\xE9s n\u2019a pas pu \xEAtre s\xE9curis\xE9. Votre r\xE9servation de table actuelle reste inchang\xE9e.","picker.guestCountNoLongerAvailable":"Ce nombre d\u2019invit\xE9s n\u2019est plus disponible. Votre r\xE9servation actuelle reste inchang\xE9e.","picker.guests":"Invit\xE9s","picker.guestsCount":"{count} invit\xE9s","picker.guestsCountEdit":"{count} invit\xE9s \xB7 Modifier","picker.held":"R\xE9serv\xE9","picker.heldForYou":"R\xE9serv\xE9 pour vous","picker.heldSeatExplanation":"Un autre acheteur retient cette place actuellement. Elle pourrait redevenir disponible.","picker.heldTicketsReleased":"Les billets r\xE9serv\xE9s ont \xE9t\xE9 lib\xE9r\xE9s. Choisissez vos nouvelles places.","picker.heldTicketsRestored":"Vos billets r\xE9serv\xE9s ont \xE9t\xE9 restaur\xE9s.","picker.hidePanel":"Masquer le panneau","picker.hideTicketPanel":"Masquer le panneau des billets","picker.holdSeatsAndCheckout":"R\xE9server les places et payer","picker.howOfferWorks":"Comment fonctionne l\u2019offre \xAB {name} \xBB","picker.interactive3dVenueView":"Vue 3D interactive du lieu","picker.keepMine":"Garder les miennes","picker.labelNoLongerAvailable":"{label} n\u2019est plus disponible.","picker.labelRemoved":"{label} retir\xE9.","picker.labelRemovedFromHold":"{label} retir\xE9 de votre r\xE9servation.","picker.labelRestored":"{label} restaur\xE9.","picker.labelsNoLongerAvailable.one":"{labels} n\u2019est plus disponible. Choisissez une autre place.","picker.labelsNoLongerAvailable.other":"{labels} ne sont plus disponibles. Choisissez un autre groupe.","picker.leftCount.one":"{count} restante","picker.leftCount.other":"{count} restantes","picker.levelNumber":"Niveau {number}","picker.levels":"Niveaux","picker.liveAvailability":"Disponibilit\xE9 en direct \u2014 les places se mettent \xE0 jour en temps r\xE9el","picker.loadingSeatMap":"Chargement du plan de salle\u2026","picker.lookAroundLive3d":"Regarder autour en 3D en direct","picker.manualTicketsRemovedNote":"Vos billets s\xE9lectionn\xE9s manuellement ne seront retir\xE9s qu\u2019apr\xE8s qu\u2019un nouveau groupe soit s\xE9curis\xE9.","picker.map":"Plan","picker.mapDidNotLoad":"Le plan de salle n\u2019a pas pu se charger","picker.maxTicketsForOrder":"Vous pouvez s\xE9lectionner jusqu\u2019\xE0 {count} billets pour cette commande.","picker.selectExactMore":"S\xE9lectionnez-en encore {count}","picker.selectExactCount":"S\xE9lectionnez exactement {count} billets","picker.selectMinimumMore":"S\xE9lectionnez-en encore {count}","picker.adjustSeatSelection":"Ajustez la s\xE9lection des si\xE8ges","picker.selectSeatsTogether":"Choisissez des si\xE8ges contigus dans la m\xEAme rang\xE9e et cat\xE9gorie.","picker.minToMaxGuests":"De {min} \xE0 {max} invit\xE9s","picker.more":"Plus","picker.moreGuests":"Plus d\u2019invit\xE9s","picker.moreSeats":"Plus de places","picker.moreSelectedCount":"{count} de plus s\xE9lectionn\xE9es","picker.moreTimeAdded":"Du temps suppl\xE9mentaire a \xE9t\xE9 ajout\xE9 \u2014 vos places restent r\xE9serv\xE9es.","picker.noAccessibilityMetadata":"Aucune information d\u2019accessibilit\xE9 fournie","picker.noAuthoredRestriction":"Aucune restriction indiqu\xE9e par l\u2019organisateur","picker.noSeatsSelected":"Aucune place s\xE9lectionn\xE9e","picker.notChargedYet":"Vous ne serez pas encore d\xE9bit\xE9.","picker.notForSale":"Non disponible \xE0 la vente","picker.notForSaleExplanation":"Cette place n\u2019est pas incluse dans la vente en cours.","picker.numberOfGuests":"Nombre d\u2019invit\xE9s","picker.offerDetailActive":"Ce prix s\u2019applique automatiquement aux places \xE9ligibles. Les billets dans les paniers actifs r\xE9duisent temporairement la quantit\xE9 disponible ; les r\xE9servations lib\xE9r\xE9es ou expir\xE9es la restituent. Lorsque l\u2019offre se termine, l\u2019offre correspondante suivante ou le prix normal du billet prend le relais.","picker.offerDetailUpcoming":"Les billets sont disponibles maintenant \xE0 leur prix normal. Cette offre programm\xE9e s\u2019appliquera automatiquement aux places \xE9ligibles d\xE8s son d\xE9marrage.","picker.offerRemainingAvailable":"{count} disponibles","picker.offerStarts":"d\xE9bute {time}","picker.offerUntil":"jusqu\u2019\xE0 {time}","picker.oneSeatSaved":"1 place enregistr\xE9e","picker.oneSeatSavedChooseAnother":"Une place enregistr\xE9e ; choisissez-en une autre \xE0 comparer","picker.openAuthored360":"Ouvrir la vue 360\xB0 du lieu","picker.openComparison":"Ouvrir la comparaison","picker.openComparisonOfSeats":"Ouvrir la comparaison de {count} places","picker.openTicketPanel":"Ouvrir le panneau des billets","picker.peekFromPrice":"D\xE8s {price}","picker.peekTicketsTotal.one":"{count} billet \xB7 {total}","picker.peekTicketsTotal.other":"{count} billets \xB7 {total}","picker.perGuestPrice":"{price} par invit\xE9","picker.pickYourSeats":"Choisissez vos places","picker.preferredTicketType":"Type de billet pr\xE9f\xE9r\xE9","picker.preferredVenueZone":"Zone du lieu pr\xE9f\xE9r\xE9e","picker.priceNotSupplied":"Prix non fourni","picker.releaseHeldTickets":"Lib\xE9rer les billets r\xE9serv\xE9s et choisir d\u2019autres places","picker.releasingEllipsis":"Lib\xE9ration en cours\u2026","picker.removeHeldTicketLabel":"Retirer le billet r\xE9serv\xE9 {label}","picker.removeSeatLabel":"Retirer {label}","picker.removeTicketsUntilOrFewer":"Retirez des billets jusqu\u2019\xE0 ce que votre commande en contienne {count} ou moins.","picker.replaceCurrentChoices":"Remplacer votre s\xE9lection actuelle ?","picker.review":"V\xE9rifier","picker.row":"Rang\xE9e","picker.rowLabel":"Rang\xE9e {label}","picker.saveToCompare":"Enregistrer pour comparer","picker.savedForComparison":"Enregistr\xE9 pour comparaison","picker.savedSeatComparison":"Comparaison de places enregistr\xE9e","picker.scheduledOffer":"Offre programm\xE9e","picker.seat":"Place","picker.seatCount.one":"{count} place","picker.seatCount.other":"{count} places","picker.seatJustTakenByAnother":"La place {label} vient d\u2019\xEAtre prise par un autre acheteur.","picker.seatLabel":"Place {label}","picker.seatNoLongerAvailable":"Cette place n\u2019est plus disponible.","picker.seatNoLongerYours":"Certaines places ne vous sont plus disponibles. Elles ont \xE9t\xE9 retir\xE9es de votre commande.","picker.seatNumberLower":"place {label}","picker.seatSalesClosedForEvent":"La vente de places pour cet \xE9v\xE9nement est termin\xE9e.","picker.seatSelection":"S\xE9lection des places","picker.seatStatusLegend":"L\xE9gende du statut des places","picker.seatTaken":"Un autre acheteur a pris une place que vous aviez choisie. Elle a \xE9t\xE9 retir\xE9e de votre commande.","picker.seatsHeldForNeedMoreTime":"Vos places sont r\xE9serv\xE9es pendant <b>{time}</b>. Besoin de plus de temps ?","picker.seatsJustTaken":"Une ou plusieurs places viennent d\u2019\xEAtre prises. Veuillez choisir \xE0 nouveau.","picker.seatsJustTakenInCategory.one":"{count} place tout juste prise dans {label} \xB7 {left} restante","picker.seatsJustTakenInCategory.other":"{count} places tout juste prises dans {label} \xB7 {left} restantes","picker.seatsNoLongerAvailableTryAnother":"Ces places ne sont plus disponibles. Essayez une autre quantit\xE9 ou un autre type de billet.","picker.seatsSecured":"Places s\xE9curis\xE9es","picker.seatsSelectedCount.one":"{count} s\xE9lectionn\xE9e","picker.seatsSelectedCount.other":"{count} s\xE9lectionn\xE9es","picker.section":"Section","picker.secureMore":"S\xE9curiser plus","picker.secureMoreAndCheckout":"S\xE9curiser {count} de plus et payer","picker.securedCount":"{count} s\xE9curis\xE9es","picker.seeItIn3d":"Voir en 3D","picker.select":"S\xE9lectionner","picker.selectSeats":"S\xE9lectionner des places","picker.selectTable":"S\xE9lectionner la table","picker.selectWholeTable":"S\xE9lectionner la table enti\xE8re","picker.selected":"S\xE9lectionn\xE9e","picker.selectingEllipsis":"S\xE9lection en cours\u2026","picker.showAllSeats":"Afficher toutes les places","picker.showAllTicketTypes":"Afficher les {count} types de billets","picker.showFewer":"Afficher moins","picker.showLabelSeatsOnMap":"Afficher les places {label} sur le plan","picker.showTicketPanel":"Afficher le panneau des billets","picker.sold":"Vendu","picker.soldOutCopy":"Aucune place r\xE9serv\xE9e n\u2019est actuellement disponible pour cet \xE9v\xE9nement.","picker.soldOutEyebrow":"Cet \xE9v\xE9nement","picker.soldOutTitle":"Complet","picker.soldSeatExplanation":"Cette place a d\xE9j\xE0 \xE9t\xE9 r\xE9serv\xE9e.","picker.statusAvailable":"disponible","picker.statusOnHold":"en attente","picker.statusTaken2":"prise","picker.table":"Table","picker.tableCapacity":"Capacit\xE9 de la table","picker.tableUpdatedForGuests":"{label} mise \xE0 jour pour {count} invit\xE9s.","picker.temporarilyHeld":"Temporairement r\xE9serv\xE9","picker.ticketPrices":"Prix des billets","picker.ticketTypeSoldOut":"Ce type de billet est \xE9puis\xE9. Essayez un autre type de billet.","picker.tickets":"Billets","picker.ticketsCount.one":"{count} billet","picker.ticketsCount.other":"{count} billets","picker.toggleColorblindColors":"Activer/d\xE9sactiver les couleurs adapt\xE9es au daltonisme","picker.total":"Total","picker.trayHintTapOrBest":"Touchez une place sur le plan, ou laissez-nous choisir les meilleures disponibles pour vous.","picker.trayHintTapOrStanding":"Touchez une place sur le plan \u2014 ou prenez des billets debout ci-dessous.","picker.undo":"Annuler","picker.upcomingTicketOffer":"Offre de billets \xE0 venir","picker.updateTable":"Mettre \xE0 jour la table","picker.updatingEllipsis":"Mise \xE0 jour en cours\u2026","picker.venueView":"Vue du lieu","picker.viewFromHere":"Vue depuis ici","picker.viewFromThisSeat":"Vue depuis cette place","picker.wholeTypeWord":"{typeWord} entier","picker.willChooseClosestGroup":"Nous choisirons le groupe disponible le plus proche pour vous.","picker.willFindSeatsTogether":"Nous trouverons {count} places ensemble.","picker.yourSeats":"Vos places","picker.zoomIn":"Zoomer","picker.zoomOut":"D\xE9zoomer","picker.closeVenueNav":"Fermer","picker.levelsAndAreas":"Niveaux et zones"}});var Dl={};Rt(Dl,{ACCESSIBILITY_RING_COLOR:()=>Ln,ACCESSIBILITY_TYPES:()=>Tn,CHART_STORAGE_KEY:()=>xs,CURRENCY_CHOICES:()=>Ta,DEFAULT_CURRENCY:()=>Mc,LABEL_STYLE_MAX_SIZE:()=>Ms,LABEL_STYLE_MIN_SIZE:()=>Cs,MAX_EVENT_INVENTORY:()=>oa,MAX_GA_CAPACITY:()=>_t,PickerController:()=>bn,PickerSelectionError:()=>ke,RENDERED_QUALITY_REPORT_VERSION:()=>gr,SEAT_COMMERCIAL_MARKS:()=>Cn,SUPPORTED_LOCALES:()=>Er,SURROUNDINGS_SHAPE_ROLES:()=>Mn,SeatmapRenderer:()=>di,TIER_HEIGHT_M:()=>Pi,UNGROUPED_ID:()=>He,accessibilityMeta:()=>Is,accessibilityRingColor:()=>Et,allObjects:()=>ae,applyHidden:()=>Gi,chartBounds:()=>Dt,computeSections:()=>ct,createRenderer:()=>dn,currencyExponent:()=>Pr,currencySymbol:()=>Ca,expandBooth:()=>Ot,expandChart:()=>be,expandRow:()=>st,expandRowSlots:()=>Jn,expandTable:()=>ze,expandTableSlots:()=>Fi,floorObjects:()=>ra,floorOverviewTranslations:()=>ir,floorsOf:()=>Ne,formatDate:()=>Ea,formatMinor:()=>La,formatMoney:()=>Yt,fromMinorUnits:()=>Rr,gaAreasOf:()=>lt,gaInventorySegments:()=>Ni,gaUnitLabel:()=>rr,gaUnitLabels:()=>Ge,generateSeatPanorama:()=>Tl,generateSeatThumb:()=>Rl,getLocale:()=>Ma,growJoinedGAInventory:()=>sa,hiddenObjectIds:()=>ar,inspectRenderedQualityEvidence:()=>ga,isGaUnitLabel:()=>aa,isSectionHidden:()=>sr,layerOf:()=>Rs,layoutFloorOverview:()=>zi,loadLocale:()=>Fl,objectCenter:()=>tr,owningSectionForObject:()=>Ft,pointInPolygon:()=>Bi,pointInPolygonWithHoles:()=>Y,polygonLabelPoint:()=>at,resolveLocale:()=>$i,rowInventoryCount:()=>ea,rowSeatPositions:()=>Oi,seatCommercialMeta:()=>Ls,sectionGeometry:()=>xe,setLocale:()=>ft,setMoneyLocale:()=>qi,setStringOverrides:()=>Pa,stackFloors:()=>_i,t:()=>oe,tCount:()=>Ra,tableInventoryCount:()=>ta,tableSeatCountsBySide:()=>er,translateObject:()=>Di,validGAInventorySegments:()=>or});module.exports=ks(Dl);var xs="seatmap.chart";var Tn=[{key:"wheelchair",label:"Wheelchair space",short:"Wheelchair",icon:"\u267F"},{key:"companion",label:"Companion seat",short:"Companion",icon:"\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}"},{key:"semi-ambulatory",label:"Semi-ambulatory (limited mobility)",short:"Limited mobility",icon:"\u{1F9AF}"},{key:"designated-aisle",label:"Designated aisle / transfer seat",short:"Aisle transfer",icon:"AS"},{key:"step-free",label:"Step-free accessible seat",short:"Step-free",icon:"SF"},{key:"hearing",label:"Assistive listening",short:"Hearing",icon:"\u{1F9BB}"},{key:"cart",label:"CART live-caption view",short:"CART captions",icon:"CC"},{key:"sign-language",label:"Sign-language view",short:"Sign language",icon:"\u{1F91F}"},{key:"low-vision",label:"Blind / low-vision viewing",short:"Low vision",icon:"LV"},{key:"sensory-friendly",label:"Quiet / sensory-friendly seating",short:"Sensory-friendly",icon:"QS"},{key:"plus-size",label:"Plus-size seat",short:"Plus-size",icon:"\u{1F4BA}"},{key:"lift-armrest",label:"Lift-up armrest",short:"Lift armrest",icon:"\u2195\uFE0F"}],ws=new Map(Tn.map(t=>[t.key,t]));function Is(t){return ws.get(t)}var Ln={wheelchair:"#3b82f6",companion:"#8b5cf6","semi-ambulatory":"#0ea5e9","designated-aisle":"#0284c7","step-free":"#16a34a",hearing:"#14b8a6",cart:"#7c3aed","sign-language":"#f59e0b","low-vision":"#d97706","sensory-friendly":"#6366f1","plus-size":"#ec4899","lift-armrest":"#22c55e"};function Et(t){let e=t?.[0];return e&&Ln[e]||"#3b82f6"}var Cn=[{key:"obstructedView",label:"Obstructed view",short:"Obstructed",icon:"\u26D4"},{key:"restrictedView",label:"Restricted view",short:"Restricted",icon:"\u{1F441}"},{key:"premium",label:"Premium seat",short:"Premium",icon:"\u2605"}],Ts=new Map(Cn.map(t=>[t.key,t]));function Ls(t){return Ts.get(t)}var Cs=8,Ms=24,Mn=["reference-focal","bar","entrance","exit","restroom","screen","sound","concession","coat","wall","rail","suite","obstruction"],Ps=new Set(Mn);function Rs(t){switch(t.type){case"row":case"table":case"gaArea":case"booth":case"section":return"interactive";case"decorImage":return t.layer==="foreground"?"foreground":"background";case"shape":return t.role&&Ps.has(t.role)?"surroundings":"background";case"text":return"background";default:return"interactive"}}var Pn=t=>Math.max(1,t.fontSize*.6+(t.letterSpacing??0));function Es(t,e){let i=t.text.split(/\r?\n/);if(!t.width)return Math.max(1,i.length);let n=Math.max(1,Math.floor(e/Pn(t))),r=0;for(let o of i){if(!o.length){r+=1;continue}let s=0;for(let a of o.split(/\s+/)){let l=a.length;s&&s+1+l<=n?s+=1+l:(r+=Math.max(1,Math.ceil(l/n)),s=l%n)}}return Math.max(1,r)}function Rn(t){let e=t.background?.padding??0,i=t.text.split(/\r?\n/),n=Math.max(1,...i.map(a=>a.length))*Pn(t),r=t.width??n+e*2,o=Math.max(1,r-e*2),s=Es(t,o);return{width:r,height:s*t.fontSize*(t.lineHeight??1.2)+e*2,lineCount:s,padding:e}}function En(t,e){let i=1-e,n=i*i*i,r=3*i*i*e,o=3*i*e*e,s=e*e*e;return{x:n*t.start.x+r*t.control1.x+o*t.control2.x+s*t.end.x,y:n*t.start.y+r*t.control1.y+o*t.control2.y+s*t.end.y}}function An(t,e,i=192){if(!Number.isInteger(e)||e<1)throw new Error("Path point count must be a positive integer");if(e===1)return[En(t,.5)];let n=Array.from({length:i+1},(l,c)=>En(t,c/i)),r=new Float64Array(n.length);for(let l=1;l<n.length;l+=1){let c=n[l].x-n[l-1].x,d=n[l].y-n[l-1].y;r[l]=r[l-1]+Math.hypot(c,d)}let o=r[r.length-1];if(o<=1e-9)return Array.from({length:e},()=>({...t.start}));let s=[],a=1;for(let l=0;l<e;l+=1){let c=o*l/(e-1);for(;a<r.length-1&&r[a]<c;)a+=1;let d=r[a-1],p=r[a],u=p===d?0:(c-d)/(p-d);s.push({x:n[a-1].x+(n[a].x-n[a-1].x)*u,y:n[a-1].y+(n[a].y-n[a-1].y)*u})}return s}function As(t,e,i){let n=i.x-e.x,r=i.y-e.y,o=n*n+r*r,s=o?Math.max(0,Math.min(1,((t.x-e.x)*n+(t.y-e.y)*r)/o)):0;return Math.hypot(t.x-(e.x+s*n),t.y-(e.y+s*r))}function wi(t,e){let i=1/0;for(let n of e)if(!(n.length<2))for(let r=0,o=n.length-1;r<n.length;o=r++){let s=As(t,n[o],n[r]);s<i&&(i=s)}return i}function Bn(t,e){let i=!1;for(let n=0,r=e.length-1;n<e.length;r=n++){let o=e[n].x,s=e[n].y,a=e[r].x,l=e[r].y;s>t.y!=l>t.y&&t.x<(a-o)*(t.y-s)/(l-s)+o&&(i=!i)}return i}function Bs(t,e,i){let n=Bn(t,e)&&!i.some(o=>Bn(t,o)),r=wi(t,[e,...i]);return n?r:-r}function Oe(t,e,i,n,r){let o=Bs({x:t,y:e},n,r);return{x:t,y:e,h:i,d:o,max:o+i*Math.SQRT2}}var xi=class{constructor(){this.items=[]}get size(){return this.items.length}push(e){let i=this.items;i.push(e);let n=i.length-1;for(;n>0;){let r=n-1>>1;if(i[r].max>=i[n].max)break;[i[r],i[n]]=[i[n],i[r]],n=r}}pop(){let e=this.items,i=e[0],n=e.pop();if(e.length&&n){e[0]=n;let r=0;for(;;){let o=r*2+1,s=o+1,a=r;if(o<e.length&&e[o].max>e[a].max&&(a=o),s<e.length&&e[s].max>e[a].max&&(a=s),a===r)break;[e[a],e[r]]=[e[r],e[a]],r=a}}return i}};function On(t){if(t.length<3)return 0;let e=0;for(let i=0,n=t.length-1;i<t.length;n=i++)e+=(t[n].x+t[i].x)*(t[n].y-t[i].y);return Math.abs(e)/2}function Fn(t,e){return Math.max(0,On(t)-(e??[]).reduce((i,n)=>i+On(n),0))}function Dn(t,e){let i=e??[];if(!t.length)return{point:{x:0,y:0},radius:0};if(t.length<3){let f=t.reduce((g,S)=>g+S.x,0)/t.length,h=t.reduce((g,S)=>g+S.y,0)/t.length;return{point:{x:f,y:h},radius:0}}let n=1/0,r=1/0,o=-1/0,s=-1/0;for(let f of t)f.x<n&&(n=f.x),f.y<r&&(r=f.y),f.x>o&&(o=f.x),f.y>s&&(s=f.y);let a=o-n,l=s-r,c=Math.min(a,l);if(!(c>0))return{point:{x:(n+o)/2,y:(r+s)/2},radius:0};let d=Math.max(a,l)/150,p=new xi,u=c/2;for(let f=n;f<o;f+=c)for(let h=r;h<s;h+=c)p.push(Oe(f+u,h+u,u,t,i));let m=Oe(n+a/2,r+l/2,0,t,i),b=0;for(;p.size;){let f=p.pop();if(!f)break;f.d>m.d&&(m=f),!(f.max-m.d<=d)&&(b>=4e3||(b+=1,u=f.h/2,p.push(Oe(f.x-u,f.y-u,u,t,i)),p.push(Oe(f.x+u,f.y-u,u,t,i)),p.push(Oe(f.x-u,f.y+u,u,t,i)),p.push(Oe(f.x+u,f.y+u,u,t,i))))}return{point:{x:m.x,y:m.y},radius:Math.max(0,m.d)}}function j(t,e,i){return Math.max(e,Math.min(i,t))}function me(t,e,i){return t<e?e:t>i?i:t}var Ul=Math.PI*2;function _n(t,e,i){return Os(t,r=>({x:r.x+e,y:r.y+i}))}function Os(t,e,i=1,n=!1){return{...t,start:e(t.start),segments:t.segments.map(r=>r.kind==="line"?{...r,end:e(r.end)}:r.kind==="arc"?{...r,center:e(r.center),radius:r.radius*Math.abs(i),clockwise:n?!r.clockwise:r.clockwise,end:e(r.end)}:{...r,control1:e(r.control1),control2:e(r.control2),end:e(r.end)})}}var Xl=4/3;function zn(t){let e=new Map,i=new Map;for(let n of t){if(n.type!=="row"||!n.segmentedRow)continue;let r=i.get(n.segmentedRow.groupId)??[];r.push(n),i.set(n.segmentedRow.groupId,r)}for(let[n,r]of i){let o=r.slice().sort((u,m)=>u.segmentedRow.componentIndex-m.segmentedRow.componentIndex),s=o[0]?.segmentedRow?.componentCount??0,a=o[0]?.segmentedRow;if(!a||!(s>=2&&o.length===s&&a?.boundaryBefore==="start"&&o.every((u,m)=>u.segmentedRow?.kind==="segmented-row-v1"&&u.segmentedRow.groupId===n&&u.segmentedRow.componentCount===s&&u.segmentedRow.componentIndex===m&&u.segmentedRow.repeatLabelOnComponents===a.repeatLabelOnComponents&&(m===0?u.segmentedRow.boundaryBefore==="start":u.segmentedRow.boundaryBefore!=="start")&&u.segmentedRow.displayLabel===a.displayLabel)))continue;let c=o.reduce((u,m)=>u+m.seatCount,0),d=0,p=0;for(let u of o)u.segmentedRow.boundaryBefore==="break"&&(d+=1),e.set(u.id,{groupId:n,adjacencyOffset:d,displayOffset:p,displayLabel:a.displayLabel,totalSeats:c,canonical:o[0],viewFromSeatUrl:a.viewFromSeatUrl,viewFromSeatMeta:a.viewFromSeatMeta,confidenceEvidence:a.confidenceEvidence}),d+=u.seatCount,p+=u.seatCount}return e}var Fs="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var Ds="abcdefghijklmnopqrstuvwxyz";function _s(t,e){let i=e.length,n=t+1,r="";for(;n>0;){n-=1;let o=n%i;r=e[o]+r,n=Math.floor(n/i)}return r}function Ii(t,e=!1){let i=e?Ds:Fs;return _s(Math.max(0,Math.floor(t)-1),i)}var zs=[[1e3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];function Nn(t){if(!Number.isFinite(t)||t<=0)return String(t);let e=Math.floor(t),i="";for(let[n,r]of zs)for(;e>=n;)i+=r,e-=n;return i}function Ns(t){let e=new Array(t);return Array.from({length:t},(i,n)=>n).sort((i,n)=>Math.abs(2*i-(t-1))-Math.abs(2*n-(t-1))||i-n).forEach((i,n)=>e[i]=n),e}function Ti(t,e){let i=t.seatLabelStart??1,n=t.seatNumbering?.direction??"ltr",r=t.seatNumbering?.step??1,o=t.seatNumbering?.scheme??"decimal",s=t.seatNumbering?.prefix??"",a=t.seatNumbering?.endAt,l=t.seatCount;if(o==="updown"||o==="updown-descending"){let m=Math.ceil(l/2),b=o==="updown"?e<m?i+2*e:i-1+2*(l-e):e<m?i+2*(m-1-e):i+1+2*(e-m);return`${s}${b}`}let c=o==="odd"||o==="even"?2:r,d=a!=null&&Number.isFinite(a)?a-(l-1)*c:i,p=n==="center"?Ns(l)[e]:n==="rtl"?l-1-e:e,u;switch(o){case"odd":{let m=d%2===1?d:d+1;u=String(m+p*2);break}case"even":{let m=d%2===0?d:d+1;u=String(m+p*2);break}case"roman":u=Nn(d+p*r);break;case"letters-upper":u=Ii(d+p*r,!1);break;case"letters-lower":u=Ii(d+p*r,!0);break;default:u=String(d+p*r);break}return`${s}${u}`}function Gs(t){return{...t.canonical,seatCount:t.totalSeats,label:t.displayLabel,displayLabel:t.displayLabel}}function Gn(t,e,i){return i?.label??`${t.label}-${Ti(t,e)}`}function Li(t,e,i,n){if(n?.displayLabel)return n.displayLabel;if(!i)return`${t.displayLabel??t.label}-${Ti(t,e)}`;let r=Gs(i),o=i.displayOffset+e;return`${i.displayLabel}-${Ti(r,o)}`}var Fe=.02291666666666667,De=1/Fe,Hs=58,Pi=Hs*Fe,Hn=0,jn=3,Vn=0,Ci=120,Vs=0,js=45,Ws=7,W=1.2;function Mi(t,e,i,n){return Number.isFinite(t)?Math.max(e,Math.min(i,t)):n}function Wn(t){return Number.isFinite(t)?Math.max(Hn,Math.min(jn,Math.round(t))):Hn}function Ks(t){return!Number.isFinite(t)||!Number.isInteger(t)||t<0?0:t<=Ws?t:jn}function xe(t,e={}){let i=Mi(e.floorBaseHeightM,Vn,Ci,0),n=Math.min(Ci,i+Ks(t.elevation)*Pi),r=t.height===void 0?n:Mi(t.height,Vn,Ci,n),o=Mi(t.rake,Vs,js,0);return{height:r,rake:o}}function Kn(t){let e=t.length;return e<=3?[...t]:[t[Math.floor(e*.25)],t[Math.floor(e*.5)],t[Math.floor(e*.75)]]}function Un(t,e,i){if(!t.length)return 1/0;if(t.length===1)return Math.hypot(e-t[0].x,i-t[0].y);let n=1/0;for(let r=0;r+1<t.length;r++){let o=t[r],s=t[r+1],a=s.x-o.x,l=s.y-o.y,c=a*a+l*l,d=c>1e-12?((e-o.x)*a+(i-o.y)*l)/c:0;d<0?d=0:d>1&&(d=1);let p=Math.hypot(e-(o.x+d*a),i-(o.y+d*l));p<n&&(n=p)}return n}function Us(t){let e=0,i=0;for(let o of t)e+=o.x,i+=o.y;let n=t.length||1;e/=n,i/=n;let r=0;for(let o of t){let s=Math.hypot(o.x-e,o.y-i);s>r&&(r=s)}return{cx:e,cy:i,r}}function Xn(t,e){return Math.hypot(t.cx-e.cx,t.cy-e.cy)-t.r-e.r}function Ri(t,e){let i=1/0;for(let n of Kn(t)){let r=Un(e,n.x,n.y);r<i&&(i=r)}for(let n of Kn(e)){let r=Un(t,n.x,n.y);r<i&&(i=r)}return i}function Xs(t,e){if(t.length<3)return{pts:t,seatIndices:e};let i=0,n=0;for(let d of t)i+=d.x,n+=d.y;i/=t.length,n/=t.length;let r=-1,o=t[0];for(let d of t){let p=Math.hypot(d.x-i,d.y-n);p>r&&(r=p,o=d)}let s=o.x-i,a=o.y-n,l=Math.hypot(s,a);l>1e-9?(s/=l,a/=l):(s=1,a=0);let c=t.map((d,p)=>({p:d,i:p,t:(d.x-i)*s+(d.y-n)*a})).sort((d,p)=>d.t-p.t);return{pts:c.map(d=>d.p),seatIndices:c.map(d=>e[d.i])}}function Ys(t){let e=t.length;if(e<3)return null;let i=0,n=0;for(let S of t)i+=S.x,n+=S.y;i/=e,n/=e;let r=0,o=0,s=0,a=0,l=0,c=0,d=0;for(let S of t){let y=S.x-i,x=S.y-n;r+=y*y,s+=x*x,o+=y*x,a+=y*y*y,l+=x*x*x,c+=y*x*x,d+=x*y*y}let p=r*s-o*o;if(Math.abs(p)<1e-9)return null;let u=(a+c)/2,m=(l+d)/2,b=(u*s-m*o)/p,f=(m*r-u*o)/p,h=b+i,g=f+n;return!Number.isFinite(h)||!Number.isFinite(g)?null:{cx:h,cy:g}}var qs=.15;function $s(t){if(t.length<2)return null;let e=t.map(S=>{let y=0,x=0;for(let I of S.pts)y+=I.x,x+=I.y;return{x:y/S.pts.length,y:x/S.pts.length}}),i=0,n=0;for(let S of e)i+=S.x,n+=S.y;i/=e.length,n/=e.length;let r=0,o=0,s=0;for(let S of e){let y=S.x-i,x=S.y-n;r+=y*y,o+=y*x,s+=x*x}let a=r+s,l=r*s-o*o,c=a/2+Math.sqrt(Math.max(0,a*a/4-l)),d,p;Math.abs(o)>1e-12?(d=c-s,p=o):r>=s?(d=1,p=0):(d=0,p=1);let u=Math.hypot(d,p);if(!(u>1e-12))return null;d/=u,p/=u;let m=1/0,b=-1/0,f=[];for(let S of t){let y=1/0,x=-1/0;for(let I of S.pts){let k=I.x*d+I.y*p;k<y&&(y=k),k>x&&(x=k),k<m&&(m=k),k>b&&(b=k)}f.push(x-y)}let h=b-m;return h>1e-9?(f.sort((S,y)=>S-y),f[Math.min(f.length-1,Math.floor(f.length*.9))]/h<=Zs?{x:d,y:p}:null):null}var Zs=.35;function Yn(t,e,i,n){let r=new Map;for(let h of i){let g=e[h],S=g.rowId||`__seat-${h}`,y=r.get(S);y||(y={pts:[],idx:[]},r.set(S,y)),y.pts.push({x:g.x,y:g.y}),y.idx.push(h)}if(!r.size)return{sectionId:t,rows:[],blockCount:0};let o=[];for(let[h,g]of r){let S=Xs(g.pts,g.idx),y=0;for(let x of S.pts)y+=Math.hypot(x.x-n.x,x.y-n.y);o.push({id:h,pts:S.pts,seatIndices:S.seatIndices,blockId:-1,ordinal:0,blockDepth:0,focalDistance:y/S.pts.length})}let s=o.map(h=>Us(h.pts)),a=[];for(let h=0;h<o.length;h++){let g=1/0;for(let S=0;S<o.length;S++){if(h===S||Xn(s[h],s[S])>=g)continue;let y=Ri(o[h].pts,o[S].pts);y<g&&(g=y)}Number.isFinite(g)&&a.push(g)}a.sort((h,g)=>h-g);let l=a.length?a[Math.floor(a.length/2)]:1,c=Math.max(l*1.8,1e-6),d=o.map(()=>[]);for(let h=0;h<o.length;h++)for(let g=h+1;g<o.length;g++)Xn(s[h],s[g])>c||Ri(o[h].pts,o[g].pts)<=c&&(d[h].push(g),d[g].push(h));let p=0;for(let h=0;h<o.length;h++){if(o[h].blockId!==-1)continue;let g=p++,S=[h];for(o[h].blockId=g;S.length;){let y=S.pop();for(let x of d[y])o[x].blockId===-1&&(o[x].blockId=g,S.push(x))}}let u=new Map;for(let h of o){let g=u.get(h.blockId)??[];g.push(h),u.set(h.blockId,g)}let m=[];for(let h of o){if(h.pts.length<4)continue;let g=Ys(h.pts);g&&(!Number.isFinite(g.cx)||!Number.isFinite(g.cy)||m.push({x:g.cx,y:g.cy}))}let b=m.length>=2?(()=>{let h=m.map(y=>y.x).sort((y,x)=>y-x),g=m.map(y=>y.y).sort((y,x)=>y-x),S=Math.floor(m.length/2);return{cx:h[S],cy:g[S]}})():null;if(b){let h=k=>Math.hypot(k.x-b.cx,k.y-b.cy),g=1/0,S=-1/0,y=[];for(let k of o){let w=1/0,M=-1/0;for(let C of k.pts){let L=h(C);L<w&&(w=L),L>M&&(M=L)}y.push(M-w),w<g&&(g=w),M>S&&(S=M)}let x=S-g;y.sort((k,w)=>k-w);let I=y[Math.min(y.length-1,Math.floor(y.length*.9))];if(x>1e-9&&I/x<=qs){let k=o.map(A=>{let F=0;for(let H of A.pts)F+=h(H);return{row:A,radius:F/A.pts.length}}),w=k[0],M=k[0];for(let A of k)A.radius<w.radius&&(w=A),A.radius>M.radius&&(M=A);if(w.row.focalDistance>M.row.focalDistance)for(let A of k)A.radius=-A.radius;let L=1/0;for(let A of k)A.radius<L&&(L=A.radius);k.sort((A,F)=>A.radius-F.radius);let R=-1,v=-1/0,T=x/Math.max(1,k.length)*.5,E=[];for(let A of k)A.radius-v>T&&(R++,v=A.radius),A.row.ordinal=R,A.row.blockDepth=A.radius-L,E.push(A.row);return{sectionId:t,rows:E,blockCount:p}}}let f=[];for(let[,h]of u){let g=$s(h);if(g){let S=x=>{let I=0;for(let k of x.pts)I+=k.x*g.x+k.y*g.y;return I/x.pts.length};h.sort((x,I)=>S(x)-S(I)),h.length>=2&&h[0].focalDistance>h[h.length-1].focalDistance&&h.reverse();let y=0;for(let x=0;x<h.length;x++)x>0&&(y+=Ri(h[x-1].pts,h[x].pts)),h[x].ordinal=x,h[x].blockDepth=y,f.push(h[x])}else{let S=1/0;for(let y of h)y.focalDistance<S&&(S=y.focalDistance);h.sort((y,x)=>y.focalDistance-x.focalDistance);for(let y=0;y<h.length;y++)h[y].ordinal=y,h[y].blockDepth=Math.max(0,h[y].focalDistance-S),f.push(h[y])}}return{sectionId:t,rows:f,blockCount:p}}function Qn(t){return t?t.accessibility&&t.accessibility.length?t.wheelchairSpaceType&&!t.accessibility.includes("wheelchair")?["wheelchair",...t.accessibility]:t.accessibility:t.wheelchairSpaceType?["wheelchair"]:t.accessible?["wheelchair"]:[]:[]}var Bt=Math.PI/180,Qs=9,_e=16;function Ai(t,e,i,n){let r=i*Bt,o=Math.cos(r),s=Math.sin(r);return{x:n.x+t*o-e*s,y:n.y+t*s+e*o}}function Oi(t){let{seatCount:e,seatSpacing:i,curve:n,rotation:r,origin:o}=t,s=[];if(t.path)return An(t.path,e);if(e<=1)return e===1&&s.push({x:o.x,y:o.y}),s;if(n===0){for(let c=0;c<e;c++)s.push(Ai(c*i,0,r,o));return s}let a=n/(e-1)*Bt,l=i/(2*Math.sin(Math.abs(a)/2));for(let c=0;c<e;c++){let d=c*a,p=l*Math.sin(d),u=-l+l*Math.cos(d);s.push(Ai(p,u,r,o))}return s}function Js(t){let e=new Map;if(t.overrides)for(let i of t.overrides)e.set(i.index,i);return e}function ea(t){let e=new Set((t.overrides??[]).filter(i=>i.skip&&Number.isInteger(i.index)&&i.index>=0&&i.index<t.seatCount).map(i=>i.index));return Math.max(0,t.seatCount-e.size)}function Jn(t,e){let i=Js(t);return Oi(t).map((n,r)=>{let o=i.get(r),s=Qn(o),a=Gn(t,r,o),l={...t.commercial,...o?.commercial};return{index:r,x:n.x+(o?.dx??0),y:n.y+(o?.dy??0),label:a,displayLabel:Li(t,r,e,o),categoryKey:o?.categoryKey??t.categoryKey,skipped:!!o?.skip,accessible:s.length>0,accessibility:s,wheelchairSpaceType:o?.wheelchairSpaceType,commercial:Object.values(l).some(c=>c!==void 0&&c!==!1&&c!=="")?l:void 0,viewUrl:o?.viewFromSeatUrl??t.viewFromSeatUrl,viewMeta:o?.viewFromSeatUrl?o.viewFromSeatMeta:t.viewFromSeatMeta,labelStyle:o?.labelStyle}})}function st(t){let e=[];for(let i of Jn(t))i.skipped||e.push({id:`${t.id}:${i.index}`,label:i.label,displayLabel:i.displayLabel===i.label?void 0:i.displayLabel,x:i.x,y:i.y,rowId:t.id,categoryKey:i.categoryKey,accessible:i.accessible||void 0,accessibility:i.accessibility.length?i.accessibility:void 0,wheelchairSpaceType:i.wheelchairSpaceType,commercial:i.commercial,viewUrl:i.viewUrl,viewMeta:i.viewMeta,labelStyle:i.labelStyle});return e}function er(t){if(t.seatCountsBySide)return{...t.seatCountsBySide};let e=t.sides&&t.sides.length?t.sides:["top","bottom"],i=["top","bottom","left","right"].filter(o=>e.includes(o)),n={top:0,bottom:0,left:0,right:0};if(!i.length)return n;let r=Math.max(0,Math.round(t.seatCount));for(let o=0;o<r;o++)n[i[o%i.length]]+=1;return n}function Fi(t){let e=[],i=Math.max(0,Math.round(t.seatCount));if(i===0)return e;let n=new Map((t.overrides??[]).map(d=>[d.index,d])),r=(d,p,u,m)=>{let b=n.get(d),f=Qn(b),h=b?.label??`${t.label}-${d+1}`,g=t.displayLabel??t.label;return{index:d,label:h,displayLabel:b?.displayLabel??`${g}-${d+1}`,x:p+(b?.dx??0),y:u+(b?.dy??0),categoryKey:b?.categoryKey??t.categoryKey,skipped:!!b?.skip,accessible:f.length>0,accessibility:f,wheelchairSpaceType:b?.wheelchairSpaceType,commercial:b?.commercial,viewUrl:b?.viewFromSeatUrl,viewMeta:b?.viewFromSeatUrl?b.viewFromSeatMeta:void 0,labelStyle:b?.labelStyle,...m?{side:m}:{}}};if(t.shape==="round"){let d=(t.radius??40)+_e,p=t.rotation*Bt,u=Math.max(0,Math.min(360,t.seatArc??360));if(u>=360||i===1){for(let h=0;h<i;h++){let g=p+h/i*2*Math.PI;e.push(r(h,t.center.x+d*Math.cos(g),t.center.y+d*Math.sin(g)))}return e}let m=u*Bt,b=(2*Math.PI-m)/2,f=p+b;for(let h=0;h<i;h++){let g=f+h/(i-1)*m;e.push(r(h,t.center.x+d*Math.cos(g),t.center.y+d*Math.sin(g)))}return e}let o=t.width??80,s=t.height??50,a=er(t),l=["top","bottom","left","right"],c=0;for(let d of l){let p=a[d];for(let u=0;u<p;u++){let m,b;d==="top"?(m=-o/2+(u+.5)*o/p,b=-s/2-_e):d==="bottom"?(m=-o/2+(u+.5)*o/p,b=s/2+_e):d==="left"?(m=-o/2-_e,b=-s/2+(u+.5)*s/p):(m=o/2+_e,b=-s/2+(u+.5)*s/p);let f=Ai(m,b,t.rotation,t.center);e.push(r(c++,f.x,f.y,d))}}return e}function ta(t){return t.bookAsWhole||t.variableOccupancy?Math.max(0,Math.round(t.seatCount)):Fi(t).filter(e=>!e.skipped).length}function ze(t){return Fi(t).filter(e=>!e.skipped).map(e=>({id:`${t.id}:${e.index}`,label:e.label,...e.displayLabel!==e.label?{displayLabel:e.displayLabel}:{},x:e.x,y:e.y,rowId:t.id,categoryKey:e.categoryKey,...e.accessible?{accessible:!0}:{},...e.accessibility.length?{accessibility:e.accessibility}:{},...e.wheelchairSpaceType?{wheelchairSpaceType:e.wheelchairSpaceType}:{},...e.commercial?{commercial:e.commercial}:{},...e.viewUrl?{viewUrl:e.viewUrl}:{},...e.viewUrl&&e.viewMeta?{viewMeta:e.viewMeta}:{},...e.labelStyle?{labelStyle:e.labelStyle}:{}}))}function Ot(t){return[{id:`${t.id}:0`,label:t.label,...t.displayLabel&&t.displayLabel!==t.label?{displayLabel:t.displayLabel}:{},x:t.center.x,y:t.center.y,rowId:t.id,categoryKey:t.categoryKey,kind:"booth"}]}function Bi(t,e){let i=!1;for(let n=0,r=e.length-1;n<e.length;r=n++){let o=e[n].x,s=e[n].y,a=e[r].x,l=e[r].y;s>t.y!=l>t.y&&t.x<(a-o)*(t.y-s)/(l-s)+o&&(i=!i)}return i}function ia(t,e){return e.some((i,n)=>{let r=e[(n+1)%e.length],o=(t.y-i.y)*(r.x-i.x)-(t.x-i.x)*(r.y-i.y);if(Math.abs(o)>1e-7)return!1;let s=(t.x-i.x)*(r.x-i.x)+(t.y-i.y)*(r.y-i.y),a=(r.x-i.x)**2+(r.y-i.y)**2;return s>=-1e-7&&s<=a+1e-7})}function Y(t,e,i){return Bi(t,e)&&!(i??[]).some(n=>Bi(t,n)||ia(t,n))}function at(t,e){return Dn(t,e).point}function Ei(t){if(!t.length)return{x:0,y:0};let e=0,i=0;for(let n of t)e+=n.x,i+=n.y;return{x:e/t.length,y:i/t.length}}function tr(t){switch(t.type){case"row":{let e=st(t);if(!e.length)return{x:t.origin.x,y:t.origin.y};let i=0,n=0;for(let r of e)i+=r.x,n+=r.y;return{x:i/e.length,y:n/e.length}}case"table":case"booth":return{x:t.center.x,y:t.center.y};case"gaArea":return Ei(t.points);case"section":return Ei(t.outline);case"text":return{x:t.position.x,y:t.position.y};case"shape":return t.points&&t.points.length?Ei(t.points):t.x!=null&&t.y!=null&&t.width!=null&&t.height!=null?{x:t.x+t.width/2,y:t.y+t.height/2}:{x:t.x??0,y:t.y??0};case"decorImage":return{x:t.x+t.width/2,y:t.y+t.height/2}}}function qn(t,e){return t.length===e.length&&t.every((i,n)=>i.x===e[n].x&&i.y===e[n].y)}function na(t,e){if(t.type!=="gaArea"||!qn(t.points,e.outline))return!1;let i=t.holes??[],n=e.holes??[];return i.length===n.length&&i.every((r,o)=>qn(r,n[o]))}function Ft(t,e){let i=t.filter(s=>s.type==="section"),n="referenceInventorySource"in e?e.referenceInventorySource?.logicalSectionId:void 0,r=tr(e);return(n?i.find(s=>(s.logicalSectionId??s.id)===n&&(na(e,s)||Y(r,s.outline,s.holes))):void 0)??i.find(s=>Y(r,s.outline,s.holes))}function Ne(t){return t.floors&&t.floors.length?t.floors:[{id:"floor-0",name:"Main",objects:t.objects,focalPoint:t.focalPoint,referenceImage:t.referenceImage,backgroundImage:t.backgroundImage}]}function ra(t,e){let i=Ne(t);return(e?i.find(n=>n.id===e):i[0])?.objects??[]}function ae(t){return t.floors&&t.floors.length?t.floors.flatMap(e=>e.objects):t.objects}function Di(t,e,i){let n=o=>({x:o.x+e,y:o.y+i}),r=o=>o.map(n);switch(t.type){case"row":return{...t,origin:n(t.origin)};case"table":case"booth":return{...t,center:n(t.center)};case"gaArea":return{...t,points:r(t.points),...t.holes?{holes:t.holes.map(r)}:{}};case"section":return{...t,outline:r(t.outline),...t.outlinePath?{outlinePath:_n(t.outlinePath,e,i)}:{},...t.holes?{holes:t.holes.map(r)}:{}};case"text":return{...t,position:n(t.position)};case"shape":return{...t,...t.points?{points:r(t.points)}:{},...t.x!=null?{x:t.x+e}:{},...t.y!=null?{y:t.y+i}:{}};case"decorImage":return{...t,x:t.x+e,y:t.y+i}}}function _i(t,e=900){if(!t.floors||t.floors.length<2)return t;let i=[];return t.floors.forEach((n,r)=>{let o=-r*e;for(let s of n.objects)i.push(o===0?s:Di(s,0,o))}),{...t,objects:i,floors:void 0}}function zi(t){let e=t.floors;if(!e||e.length<2)return t;let i=ir(t),n=[];return e.forEach((r,o)=>{let{x:s,y:a}=i[o];for(let l of r.objects)n.push(Di(l,s,a))}),{...t,objects:n,floors:void 0,referenceImage:void 0,backgroundImage:void 0}}function ir(t){let e=t.floors;if(!e?.length)return[{x:0,y:0}];if(e.length<2)return e.map(()=>({x:0,y:0}));let i=e.map(u=>Dt({...t,objects:u.objects,floors:void 0,focalPoint:u.focalPoint,referenceImage:void 0,backgroundImage:void 0})),n=Math.max(1,...i.map(u=>Math.max(u.width,u.height))),r=Math.max(64,Math.min(240,n*.08)),o=16/10,s=null;for(let u=1;u<=e.length;u+=1){let m=Math.ceil(e.length/u),b=new Array(u).fill(0),f=new Array(m).fill(0);i.forEach((x,I)=>{let k=I%u,w=Math.floor(I/u);b[k]=Math.max(b[k],x.width),f[w]=Math.max(f[w],x.height)});let h=b.reduce((x,I)=>x+I,0)+r*(u-1),g=f.reduce((x,I)=>x+I,0)+r*(m-1),S=u*m-e.length,y=Math.abs(Math.log(h/Math.max(1,g)/o))+S*.04;(!s||y<s.score)&&(s={columns:u,columnWidths:b,rowHeights:f,score:y})}let{columns:a,columnWidths:l,rowHeights:c}=s,d=[],p=[];return l.reduce((u,m,b)=>(d[b]=u,u+m+r),0),c.reduce((u,m,b)=>(p[b]=u,u+m+r),0),e.map((u,m)=>{let b=i[m],f=m%a,h=Math.floor(m/a),g=d[f]+(l[f]-b.width)/2,S=p[h]+(c[h]-b.height)/2;return{x:g-b.x,y:S-b.y}})}function $n(t,e,i,n,r,o){let s=[],a=zn(t),l=p=>!p?.eventConfigurationId||p.eventConfigurationId===n,c=p=>!!p&&(!p.eventConfigurationId||p.eventConfigurationId===n),d=(p,u)=>c(p)?{...p,coverage:u}:void 0;for(let p of t){let u=[];if(p.type==="row"?u=st(p):p.type==="table"?u=ze(p):p.type==="booth"&&(u=Ot(p)),!u.length)continue;for(let g of u)g.viewUrl&&!l(g.viewMeta)&&(g.viewUrl=void 0,g.viewMeta=void 0);if(p.type==="row"){let g=a.get(p.id);if(g){let S=new Map((p.overrides??[]).map(y=>[y.index,y]));for(let y of u){let x=Number(y.id.slice(y.id.lastIndexOf(":")+1));if(!Number.isInteger(x))continue;y.logicalRowId=g.groupId,y.logicalSeatIndex=g.adjacencyOffset+x,S.get(x)?.displayLabel||(y.displayLabel=Li(p,x,g)),!y.viewUrl&&g.viewFromSeatUrl&&l(g.viewFromSeatMeta)&&(y.viewUrl=g.viewFromSeatUrl,y.viewMeta=g.viewFromSeatMeta);let I=S.get(x)?.confidenceEvidence;y.confidenceEvidence=d(I,"exact-seat")??d(p.confidenceEvidence,"row-representative")??d(g.confidenceEvidence,"row-representative")}}}let m=Ft(t,p),b=m?.viewFromSeatUrl,h=(m?.zone?e?.find(g=>g.id===m.zone):void 0)?.focalPoint??i;for(let g of u){if(!g.confidenceEvidence){let S=Number(g.id.slice(g.id.lastIndexOf(":")+1)),y=(p.type==="row"||p.type==="table")&&Number.isInteger(S)?p.overrides?.find(x=>x.index===S)?.confidenceEvidence:void 0;g.confidenceEvidence=d(y,"exact-seat")??(p.type==="row"?d(p.confidenceEvidence,"row-representative"):void 0)}g.confidenceEvidence??=d(m?.confidenceEvidence,"section-representative")??(o?d(o.evidence,o.coverage):void 0),!g.viewUrl&&b&&l(m?.viewFromSeatMeta)&&(g.viewUrl=b,g.viewMeta=m?.viewFromSeatMeta),!g.viewUrl&&r&&l(r.meta)&&(g.viewUrl=r.url,g.viewMeta=r.meta),m&&(g.sectionId=m.logicalSectionId??m.id),m?.zone&&(g.zoneId=m.zone),h&&(g.focalPoint={...h})}s.push(...u)}return s}function be(t,e={}){if(t.floors?.length){let n=[];for(let r of t.floors){let o=r.focalPoint??t.focalPoint,s=r.viewFromSeatUrl?{url:r.viewFromSeatUrl,meta:r.viewFromSeatMeta}:t.viewFromSeatUrl?{url:t.viewFromSeatUrl,meta:t.viewFromSeatMeta}:void 0,a=r.confidenceEvidence?{evidence:r.confidenceEvidence,coverage:"floor-representative"}:t.confidenceEvidence?{evidence:t.confidenceEvidence,coverage:"venue-representative"}:void 0,l=$n(r.objects,t.zones,o,t.eventConfigurationId,s,a);e.resolveEyeHeights!==!1&&Zn(r.objects,r.focalPoint??t.focalPoint,r.baseHeightM??0,l),n.push(...l)}return n}let i=$n(t.objects,t.zones,t.focalPoint,t.eventConfigurationId,t.viewFromSeatUrl?{url:t.viewFromSeatUrl,meta:t.viewFromSeatMeta}:void 0,t.confidenceEvidence?{evidence:t.confidenceEvidence,coverage:"venue-representative"}:void 0);return e.resolveEyeHeights!==!1&&Zn(t.objects,t.focalPoint,e.floorBaseHeightM??0,i),i}function Zn(t,e,i,n){let r=t.filter(d=>d.type==="section"),o=i>0||r.some(d=>d.height!==void 0||d.rake!==void 0||(d.elevation??0)>0);if(!r.length||!o||!e){for(let d of n)d.eyeHeightM=i+W;return}let s=new Array(n.length),a=new Map,l=new Map;for(let d=0;d<n.length;d++){let p=n[d],u=r.find(b=>Y({x:p.x,y:p.y},b.outline,b.holes))??null;if(s[d]=u,!u)continue;a.has(u.id)||a.set(u.id,xe(u,{floorBaseHeightM:i}));let m=l.get(u.id);m?m.push(d):l.set(u.id,[d])}let c=new Array(n.length).fill(void 0);for(let[d,p]of l){let u=a.get(d);if(!u)continue;let m=u.rake>0?Math.tan(u.rake*Math.PI/180):0,b=Yn(d,n,p,e);for(let f of b.rows){let h=f.blockDepth*Fe*m,g=u.height+h;for(let S of f.seatIndices)c[S]=g}}for(let d=0;d<n.length;d++){let p=n[d],u=s[d];if(!u){p.eyeHeightM=i+W;continue}let m=a.get(u.id);p.eyeHeightM=(c[d]??m.height)+W}}var At=40;function Dt(t){let e=1/0,i=1/0,n=-1/0,r=-1/0,o=(s,a)=>{s<e&&(e=s),a<i&&(i=a),s>n&&(n=s),a>r&&(r=a)};for(let s of ae(t))if(s.type==="row"){let a=new Map((s.overrides??[]).map(l=>[l.index,l]));Oi(s).forEach((l,c)=>{let d=a.get(c);d?.skip||o(l.x+(d?.dx??0),l.y+(d?.dy??0))})}else if(s.type==="gaArea")for(let a of s.points)o(a.x,a.y);else if(s.type==="section")for(let a of s.outline)o(a.x,a.y);else if(s.type==="decorImage")o(s.x,s.y),o(s.x+s.width,s.y+s.height);else if(s.type==="shape")if(s.points&&s.points.length)for(let a of s.points)o(a.x,a.y);else s.x!=null&&s.y!=null&&s.width!=null&&s.height!=null&&(o(s.x,s.y),o(s.x+s.width,s.y+s.height));else if(s.type==="table"){let a=_e+Qs,l=s.shape==="round"?(s.radius??40)+a:Math.max((s.width??80)/2,(s.height??50)/2)+a;o(s.center.x-l,s.center.y-l),o(s.center.x+l,s.center.y+l)}else if(s.type==="booth"){let a=Math.max(s.width,s.height)/2;o(s.center.x-a,s.center.y-a),o(s.center.x+a,s.center.y+a)}else if(s.type==="text"){let a=Rn(s);o(s.position.x,s.position.y),o(s.position.x+a.width,s.position.y+a.height)}for(let s of[t.referenceImage,t.backgroundImage]){if(!s)continue;let{center:a,width:l}=s,c=l*3/4;o(a.x-l/2,a.y-c/2),o(a.x+l/2,a.y+c/2)}if(!isFinite(e)){let s=t.focalPoint??{x:0,y:0};return{x:s.x-200,y:s.y-200,width:400,height:400}}return{x:e-At,y:i-At,width:n-e+At*2,height:r-i+At*2}}var nr="__sl_ga__",_t=1e5,oa=1e5;function rr(t,e){return`${nr}${encodeURIComponent(t)}__${e+1}`}function or(t){let e=t.inventorySegments;if(e===void 0)return!0;if(!Array.isArray(e)||e.length<1||e.length>256)return!1;let i=0,n=new Map;for(let r of e){if(!r||typeof r.sourceAreaId!="string"||!r.sourceAreaId.trim()||r.sourceAreaId.length>160||!Number.isInteger(r.startIndex)||r.startIndex<0||!Number.isInteger(r.count)||r.count<1||r.startIndex+r.count>_t||(i+=r.count,i>_t))return!1;let o=n.get(r.sourceAreaId)??[],s=r.startIndex+r.count;if(o.some(a=>r.startIndex<a.end&&s>a.start))return!1;o.push({start:r.startIndex,end:s}),n.set(r.sourceAreaId,o)}return i===t.capacity}function Ni(t){let e=Math.min(_t,Math.max(0,Math.floor(t.capacity)));return t.inventorySegments===void 0?e?[{sourceAreaId:t.id,startIndex:0,count:e}]:[]:or(t)?t.inventorySegments.map(i=>({...i})):[]}function Ge(t){return Ni(t).flatMap(e=>Array.from({length:e.count},(i,n)=>rr(e.sourceAreaId,e.startIndex+n)))}function sa(t,e){if(t.inventorySegments===void 0||e===t.capacity)return t.inventorySegments;if(e<t.capacity)return;let i=Ni(t);if(!i.length)return;let n=e-t.capacity;if(!n)return i;let o=i.filter(a=>a.sourceAreaId===t.id).reduce((a,l)=>Math.max(a,l.startIndex+l.count),0),s=i[i.length-1];if(s?.sourceAreaId===t.id&&s.startIndex+s.count===o)s.count+=n;else{if(i.length>=256)return;i.push({sourceAreaId:t.id,startIndex:o,count:n})}return i}function lt(t){return ae(t).filter(e=>e.type==="gaArea")}function aa(t){return t.startsWith(nr)}var He="__ungrouped__";function la(t){return t.type==="row"?st(t).map(e=>e.label):t.type==="table"?ze(t).map(e=>e.label):t.type==="booth"?Ot(t).map(e=>e.label):t.type==="gaArea"?Ge(t):[]}function ca(t){return t.type==="row"||t.type==="table"||t.type==="booth"||t.type==="gaArea"}function ct(t){let e=ae(t),i=e.filter(s=>s.type==="section"),n=new Map;for(let s of i){let a=s.logicalSectionId??s.id;n.get(a)||n.set(a,{id:a,label:s.displayLabel||s.label||"Section",zone:s.zone,seatCount:0,objectIds:[],seatLabels:[]})}let r={id:He,label:"Other seats",seatCount:0,objectIds:[],seatLabels:[]},o=new Map;for(let s of e){if(!ca(s))continue;let a=la(s);if(a.length===0)continue;let l=Ft(e,s),c=l?n.get(l.logicalSectionId??l.id):r;c.seatCount+=a.length,c.objectIds.push(s.id),c.seatLabels.push(...a),o.set(s.id,c.id)}return{sections:[...n.values()],ungrouped:r.objectIds.length?r:null,objectToSection:o}}function sr(t,e){return e.has(t.id)||!!t.logicalSectionId&&e.has(t.logicalSectionId)||!!t.zone&&e.has(t.zone)}function ar(t,e){let i=new Set;if(!e.size)return i;let{sections:n,ungrouped:r,objectToSection:o}=ct(t),s=new Set,a=new Map(n.map(c=>[c.id,c.zone]));for(let c of n){let d=a.get(c.id);(e.has(c.id)||d&&e.has(d))&&s.add(c.id)}let l=!!r&&e.has(He);for(let[c,d]of o)(s.has(d)||l&&d===He)&&i.add(c);return i}function Gi(t,e){if(!e.size)return t;let i=ar(t,e),n=e instanceof Set?e:new Set(e),r=s=>!(i.has(s.id)||s.type==="section"&&sr(s,n));if(t.floors&&t.floors.length){let s=!1,a=t.floors.map(l=>{let c=l.objects.filter(r);return c.length!==l.objects.length&&(s=!0),c.length===l.objects.length?l:{...l,objects:c}});return s?{...t,floors:a,objects:a[0].objects}:t}let o=t.objects.filter(r);return o.length===t.objects.length?t:{...t,objects:o}}var lr=/^#?([\da-f]{3}|[\da-f]{6})$/i,da=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*([\d.]+))?\s*\)$/i;function Z(t){let e=lr.exec((t??"").trim());if(!e)return null;let i=e[1].length===3?e[1].split("").map(r=>r+r).join(""):e[1],n=parseInt(i,16);return[n>>16&255,n>>8&255,n&255]}function ua({r:t,g:e,b:i}){let n=r=>Math.max(0,Math.min(255,Math.round(r))).toString(16).padStart(2,"0");return`#${n(t)}${n(e)}${n(i)}`}function dt(t,e,i){return ua({r:t,g:e,b:i})}function ji(t){let e=t.trim(),i=lr.exec(e);if(i&&e.startsWith("#"))return`#${(i[1].length===3?i[1].split("").map(s=>s+s).join(""):i[1]).toLowerCase()}`;let n=da.exec(e);if(!n||n[4]!=null&&Number(n[4])<.999)return null;let r=[Number(n[1]),Number(n[2]),Number(n[3])];return r.some(o=>!Number.isInteger(o)||o<0||o>255)?null:`#${r.map(o=>o.toString(16).padStart(2,"0")).join("")}`}function Hi(t){let e=t/255;return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function Vi(t){return .2126*Hi(t[0])+.7152*Hi(t[1])+.0722*Hi(t[2])}function cr(t,e){let i=Z(t),n=Z(e);if(!i||!n)return null;let r=Vi(i),o=Vi(n);return(Math.max(r,o)+.05)/(Math.min(r,o)+.05)}function ha(t){let e=t.trim();if(e.startsWith("#")){let n=Z(e);return n?(.2126*n[0]+.7152*n[1]+.0722*n[2])/255:NaN}let i=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/.exec(e);return i?(.2126*+i[1]+.7152*+i[2]+.0722*+i[3])/255:NaN}function ut(t,e=.6){let i=ha(t);return!Number.isNaN(i)&&i>e}function we(t,e){let i=Z(t);return i?dt(...i.map(n=>n+(255-n)*e)):t}function ge(t,e){let i=Z(t);return i?dt(...i.map(n=>n*(1-e))):t}function zt(t,e,i){let n=Z(t),r=Z(e);return!n||!r?t:dt(n[0]+(r[0]-n[0])*i,n[1]+(r[1]-n[1])*i,n[2]+(r[2]-n[2])*i)}function Wi(t,e){let i=0,n=0,r=0,o=0;for(let s of t){let a=Z(s.hex);!a||s.w<=0||(i+=a[0]*s.w,n+=a[1]*s.w,r+=a[2]*s.w,o+=s.w)}return o>0?dt(i/o,n/o,r/o):e}function dr(t,e){let i=Z(t);if(!i)return t;let n=.2126*i[0]+.7152*i[1]+.0722*i[2];return dt(...i.map(r=>r+(n-r)*e))}function pa(t,e){let i=Z(t);return i?`rgba(${i[0]},${i[1]},${i[2]},${e})`:t}var le=pa;var ye=7,Ve=10,ur=15,hr=11,je=.85,Q=12,fa=4.5;var Nt="#000000",Gt="#ffffff";function Ie(t,e){return t*e>=Q}var ce=24,pr={wheelchair:"M7.8 4.5a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM8 7L10.5 7L10.5 15L8 15ZM8 12.5L18 12.5L18 15L8 15ZM16 15L18 15L18 18L16 18ZM5.5 16a5.5 5.5 0 1 0 11 0a5.5 5.5 0 1 0 -11 0zM8 16a3 3 0 1 1 6 0a3 3 0 1 1 -6 0z",companion:"M5.5 6.5a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM4.5 18.5L6 11.5L11 11.5L12.5 18.5ZM12.5 7.5a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM11.5 19L13 12.5L18 12.5L19.5 19Z","semi-ambulatory":"M8.3 3.8a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM9 6.2L12 6.6L11 13.5L8.6 13L9 6.2ZM8.6 13L11 13L9.5 21L7 21ZM10.4 13L12.6 13L13.6 21L11.2 21ZM11.2 7.2L14 8L14.6 9.6L11.9 8.9ZM14.4 6.8L15.9 6.8L16.4 21L14.8 21Z","designated-aisle":"M3 5L6 5L6 14L3 14ZM3 12L13 12L13 15L3 15ZM5 15L7 15L7 20L5 20ZM11 15L13 15L13 20L11 20ZM13 7L20 7L17 4L19 4L23 8.5L19 13L17 13L20 10L13 10Z","step-free":"M4 4.5a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0zM4.4 7L7.5 7L7.5 13L11 15L9.5 17L5 14L4.4 7ZM2 19L8 19L17 10L22 10L22 13L18 13L10 21L2 21Z",hearing:"M15.5 3.5C9 2.2 5.5 6 5.5 11.5C5.5 16 8 19.5 10.5 21C13.2 22.6 16.4 20.8 15.4 18C14.8 16.4 12.9 16.1 13 14C13.1 11.9 15.8 11.4 15.8 8.5C15.8 5.4 13 4 15.5 3.5Z",cart:"M5.5 6L18.5 6a2.5 2.5 0 0 1 2.5 2.5L21 15.5a2.5 2.5 0 0 1 -2.5 2.5L11 18L7 20.5L7.5 18L5.5 18a2.5 2.5 0 0 1 -2.5 -2.5L3 8.5a2.5 2.5 0 0 1 2.5 -2.5zM6.5 11L17.5 11L17.5 12.6L6.5 12.6zM6.5 14L17.5 14L17.5 15.6L6.5 15.6z","sign-language":"M7 11L17 11L17 18a2 2 0 0 1 -2 2L9 20a2 2 0 0 1 -2 -2zM7.6 5L9.4 5L9.4 12L7.6 12zM9.9 3.5L11.7 3.5L11.7 12L9.9 12zM12.3 3.5L14.1 3.5L14.1 12L12.3 12zM14.6 5L16.4 5L16.4 12L14.6 12zM7.2 12.5L5 10.2L6.4 8.9L8.6 11.2Z","low-vision":"M2.5 12C6 6 18 6 21.5 12C18 18 6 18 2.5 12ZM9 12a3 3 0 1 0 6 0a3 3 0 1 0 -6 0zM17.5 3L19 3L19 6L17.5 6ZM19 4L22 4L22 5.5L19 5.5Z","sensory-friendly":"M4 11C4 5 7 2.5 12 2.5S20 5 20 11L17 11C17 7 15.5 5.5 12 5.5S7 7 7 11ZM3 10L8 10L8 19L5 19a2 2 0 0 1 -2 -2ZM16 10L21 10L21 17a2 2 0 0 1 -2 2L16 19ZM9 12L15 12L15 14L9 14ZM10 16L14 16L14 18L10 18Z","plus-size":"M9.4 4.3a2.6 2.6 0 1 0 5.2 0a2.6 2.6 0 1 0 -5.2 0zM5 20L4 13C4 10.5 7 9.5 12 9.5C17 9.5 20 10.5 20 13L19 20Z","lift-armrest":"M5 6L8 6L8 19L5 19zM5 16L18 16L18 19L5 19zM8 12L17 12L17 14.5L8 14.5zM14 7L16 7L16 12L14 12zM12 7L18 7L15 3Z"},yc=pr.wheelchair;function Ki(t){if(!t?.length)return null;let e=t.includes("wheelchair")?"wheelchair":t[0];return pr[e]??null}function Ht(t){return/-(\d{1,5})$/.exec(t)?.[1]??t}var K=cr;function fr(t,e,i){let n=Z(t),r=Z(e);if(!n||!r)return e;let o=Math.max(0,Math.min(1,i));return`#${n.map((a,l)=>Math.round(a*o+r[l]*(1-o))).map(a=>a.toString(16).padStart(2,"0")).join("")}`}var Vt=3;function J(t,e,i=fa){let n=K(e,t);if(n!=null&&n>=i)return e;let r=K(Nt,t)??0,o=K(Gt,t)??0;return r===0&&o===0?e:r>=o?Nt:Gt}var ma=3;function Ui(t){let e=K("#ffffff",t);if(e!=null&&e>=ma)return"#ffffff";let i=K(Nt,t)??0,n=K(Gt,t)??0;return i===0&&n===0?"#ffffff":i>=n?Nt:Gt}var gr=3,We=4.5,jt=3,mr=24,ba=20;function Xi(t){return t.filter(e=>e.visible&&!!e.screenBox)}function Ke(t,e){return t.x<e.x+e.width&&t.x+t.width>e.x&&t.y<e.y+e.height&&t.y+t.height>e.y}function Se(t){return t.length?Math.round(Math.min(...t)*100)/100:null}function B(t,e,i){return i.length?{code:t,message:e,count:i.length,samples:i.slice(0,ba)}:null}function Wt(t,e,i){return{primaryId:t.seatId,primaryLabel:t.label,...e==null?{}:{measured:Math.round(e*100)/100},...i==null?{}:{minimum:i}}}function Yi(t,e,i){return{primaryId:t.id,primaryLabel:t.label,...e==null?{}:{measured:Math.round(e*100)/100},...i==null?{}:{minimum:i}}}function br(t,e,i){return{primaryId:t.objectId,primaryLabel:t.text,...e==null?{}:{measured:Math.round(e*100)/100},...i==null?{}:{minimum:i}}}function Ue(t,e,i,n){return{primaryId:t,primaryLabel:e,secondaryId:i,secondaryLabel:n}}function ga(t,e="overview",i=null){let n=Xi(t.labels),r=Xi(t.hierarchyLabels),o=Xi(t.freeTextLabels),s=t.gaAreas.filter(v=>v.visible),a=n.map(v=>K(v.ink,v.fill)??0),l=r.map(v=>K(v.ink,v.fill)??0),c=o.map(v=>K(v.ink,v.background)??0),d=s.map(v=>K(v.effectiveBackground,t.canvasBackground)??0),p=i?t.labels.filter(v=>v.categoryKey===i):t.labels,u=i?t.gaAreas.filter(v=>v.categoryKey===i):t.gaAreas,m=p.filter(v=>v.selected),b=p.filter(v=>v.status==="held"),f=p.filter(v=>v.status==="booked"),h=p.filter(v=>v.pointerTarget.active),g=new Set([...t.labels.filter(v=>v.visible&&(v.opacity>.25||v.selected||v.status!=="free")).map(v=>v.categoryKey),...t.gaAreas.filter(v=>v.visible&&v.opacity>.1).map(v=>v.categoryKey)]),S=m.length?Se(m.flatMap(v=>[K(t.selectionRingColor,t.canvasBackground)??0,K(t.selectionRingColor,v.fill)??0])):null,y=[],x=(v,T)=>Array.from({length:v},(E,A)=>({primaryId:`overview:${A+1}`,primaryLabel:T}));if(e==="overview"&&t.rung==="sections"&&(y.push(B("overview-section-category-paint","Section overview shells must use the neutral hierarchy palette, not category paint",x(t.overviewStyle.categoryPaintedSectionShells,"category-painted section shell"))),y.push(B("overview-category-detail-visible","Category-tinted section detail must wait until section focus or seat zoom",x(t.overviewStyle.visibleCategoryDetailOutlines,"category detail outline"))),y.push(B("overview-row-hints-visible","Row and seat patterns must not clutter the section overview",x(t.overviewStyle.visibleSectionRowHints,"section row hint"))),y.push(B("overview-availability-clutter","Live availability counts belong in focused detail, not on section overview shells",x(t.overviewStyle.visibleSectionAvailabilityLabels,"section availability label"))),y.push(B("overview-ga-detail-visible","Section-contained standing paint belongs in focused detail, not on section overview shells",x(t.overviewStyle.visibleSectionGADetails,"section-contained GA detail")))),y.push(B("bookable-label-undersized","Visible bookable labels must meet the rendered small-text size floor",n.filter(v=>v.renderedFontPx<t.minimumVisibleLabelPx).map(v=>Wt(v,v.renderedFontPx,t.minimumVisibleLabelPx)))),e==="interaction"){let v=p.length>0,T=u.length>0,E=v||T,A=u.filter(P=>P.visible),F=new Set([...p.flatMap(P=>P.sectionId?[P.sectionId]:[]),...u.flatMap(P=>P.sectionId?[P.sectionId]:[])]),H=new Set([...t.labels.map(P=>P.categoryKey),...t.gaAreas.map(P=>P.categoryKey)]),_=P=>P.screenCenter.x>=0&&P.screenCenter.x<=t.viewport.width&&P.screenCenter.y>=0&&P.screenCenter.y<=t.viewport.height;y.push(B("detail-rung-missing","Interaction evidence with bookable inventory must render the seat-detail rung",E&&t.rung!=="seats"?[{primaryId:"renderer",primaryLabel:t.rung}]:[])),y.push(B("detail-inventory-not-visible","Interaction evidence must frame at least one real bookable unit",E&&!p.some(_)&&!A.length?[{primaryId:"renderer",primaryLabel:"no target inventory in viewport"}]:[])),y.push(B("pointer-target-inactive","Interaction evidence must expose a live production pointer target",v&&!h.some(_)||!v&&T&&!A.some(P=>P.interactive)?[{primaryId:"renderer",primaryLabel:"no active pointer target in viewport"}]:[])),y.push(B("pointer-target-undersized","Every active production pointer target must reach at least 24 CSS pixels",h.filter(P=>_(P)&&P.pointerTarget.effectiveMinimumPx<mr).map(P=>Wt(P,P.pointerTarget.effectiveMinimumPx,mr)))),y.push(B("selected-state-missing","Interaction evidence must paint a selected unit and its renderer-owned ring",v&&(!m.length||!m.some(P=>t.selectionRingSeatIds.includes(P.seatId)))?[{primaryId:"renderer",primaryLabel:"selected state"}]:[])),y.push(B("selected-state-contrast-low","The selected-state ring must maintain 3:1 graphical contrast with the canvas",m.length&&(S??0)<jt?[{primaryId:m[0].seatId,primaryLabel:m[0].label,measured:Math.round((S??0)*100)/100,minimum:jt}]:[])),y.push(B("held-state-missing","Interaction evidence must paint a held state when the floor has at least two status-managed units",p.length>=2&&!b.length?[{primaryId:"renderer",primaryLabel:"held state"}]:[])),y.push(B("booked-state-missing","Interaction evidence must paint a taken state when the floor has at least three status-managed units",p.length>=3&&!f.length?[{primaryId:"renderer",primaryLabel:"booked state"}]:[]));let G=new Set(b.map(P=>`${P.fill.toLowerCase()}:${P.opacity}`)),X=new Set(f.map(P=>`${P.fill.toLowerCase()}:${P.opacity}`));y.push(B("status-state-indistinct","Held and taken evidence must resolve to distinct renderer paint",b.length&&f.length&&[...G].some(P=>X.has(P))?[{primaryId:b[0].seatId,primaryLabel:b[0].label,secondaryId:f[0].seatId,secondaryLabel:f[0].label}]:[])),y.push(B("section-focus-missing","Interaction evidence must exercise section focus and its backdrop when section membership exists",F.size&&(!t.focusedSectionId||!t.focusBackdropVisible)?[{primaryId:"renderer",primaryLabel:"section focus"}]:[])),y.push(B("category-filter-missing","Interaction evidence must exercise a category filter when multiple categories exist",H.size>=2&&(!t.categoryFilterKeys||!t.categoryFilterKeys.length)?[{primaryId:"renderer",primaryLabel:"category filter"}]:[]));let D=t.labels.filter(P=>P.status==="free"&&!P.selected&&t.categoryFilterKeys!=null&&!t.categoryFilterKeys.includes(P.categoryKey)),z=t.gaAreas.filter(P=>t.categoryFilterKeys!=null&&!t.categoryFilterKeys.includes(P.categoryKey));y.push(B("category-filter-ineffective","The active category filter must visibly dim excluded free inventory",(D.length||z.length)&&!D.some(P=>P.opacity<=.25)&&!z.some(P=>P.opacity<=.1)?[...D.map(P=>Wt(P,P.opacity)),...z.map(P=>({primaryId:P.areaId,primaryLabel:P.label,measured:P.opacity}))]:[])),y.push(B("target-category-not-visible","A category-specific interaction scene must visibly paint its exact target category",i&&!g.has(i)?[{primaryId:i,primaryLabel:i}]:[])),y.push(B("target-category-filter-mismatch","A category-specific interaction scene must bind its filter to only the exact target category",i&&(t.categoryFilterKeys?.length!==1||t.categoryFilterKeys[0]!==i)?[{primaryId:i,primaryLabel:i}]:[]))}y.push(B("bookable-label-contrast-low","Visible bookable labels must meet 4.5:1 contrast against their actual paint",n.flatMap(v=>{let T=K(v.ink,v.fill)??0;return T<We?[Wt(v,T,We)]:[]})));let I=[];for(let v=0;v<n.length;v+=1)for(let T=0;T<v;T+=1)Ke(n[v].screenBox,n[T].screenBox)&&I.push(Ue(n[T].seatId,n[T].label,n[v].seatId,n[v].label));y.push(B("bookable-label-collision","Visible bookable labels must not overlap",I)),y.push(B("hierarchy-label-undersized","Visible section and zone labels must meet the rendered small-text size floor",r.filter(v=>v.renderedFontPx<Q).map(v=>Yi(v,v.renderedFontPx,Q)))),y.push(B("hierarchy-label-contrast-low","Visible section and zone labels must meet 4.5:1 contrast against their backing paint",r.flatMap(v=>{let T=K(v.ink,v.fill)??0;return T<We?[Yi(v,T,We)]:[]}))),y.push(B("hierarchy-label-outside-section","Visible section labels must remain inside the filled section surface and outside holes",r.filter(v=>v.kind==="section"&&v.fitsContainer===!1).map(v=>Yi(v))));let k=[];for(let v=0;v<r.length;v+=1)for(let T=0;T<v;T+=1)Ke(r[v].screenBox,r[T].screenBox)&&k.push(Ue(r[T].id,r[T].label,r[v].id,r[v].label));y.push(B("hierarchy-label-collision","Visible hierarchy labels must not overlap each other",k));let w=[];for(let v of r)for(let T of n)Ke(v.screenBox,T.screenBox)&&w.push(Ue(v.id,v.label,T.seatId,T.label));y.push(B("hierarchy-bookable-collision","Visible hierarchy labels must not overlap bookable labels",w)),y.push(B("free-text-undersized","Visible chart text must meet the rendered small-text size floor",o.filter(v=>v.renderedFontPx<t.minimumVisibleLabelPx).map(v=>br(v,v.renderedFontPx,t.minimumVisibleLabelPx)))),y.push(B("free-text-contrast-low","Visible chart text must meet 4.5:1 contrast against its measured background",o.flatMap(v=>{let T=K(v.ink,v.background)??0;return T<We?[br(v,T,We)]:[]})));let M=[];for(let v=0;v<o.length;v+=1)for(let T=0;T<v;T+=1)Ke(o[v].screenBox,o[T].screenBox)&&M.push(Ue(o[T].objectId,o[T].text,o[v].objectId,o[v].text));y.push(B("free-text-collision","Visible chart text labels must not overlap each other",M));let C=[];for(let v of o)for(let T of n)Ke(v.screenBox,T.screenBox)&&C.push(Ue(v.objectId,v.text,T.seatId,T.label));y.push(B("free-text-bookable-collision","Visible chart text must not overlap bookable labels",C));let L=[];for(let v of o)for(let T of r)Ke(v.screenBox,T.screenBox)&&L.push(Ue(v.objectId,v.text,T.id,T.label));y.push(B("free-text-hierarchy-collision","Visible chart text must not overlap hierarchy labels",L)),y.push(B("ga-contrast-low","Visible GA surfaces must maintain 3:1 graphical contrast with the canvas",s.flatMap(v=>{let T=K(v.effectiveBackground,t.canvasBackground)??0;return T<jt?[{primaryId:v.areaId,primaryLabel:v.label,measured:Math.round(T*100)/100,minimum:jt}]:[]})));let R=y.filter(v=>!!v);return{version:gr,passed:R.length===0,state:e,targetCategoryKey:i,resolvedRules:["rendered-overview-label-size","rendered-overview-label-contrast","rendered-overview-label-collision","rendered-overview-hierarchy-containment","rendered-overview-section-first-style","rendered-overview-ga-contrast",...e==="interaction"?["rendered-detail-inventory","rendered-pointer-target","rendered-selected-held-taken-states","rendered-section-focus","rendered-category-filter"]:[]],viewport:t.viewport,canvasBackground:t.canvasBackground,effectiveScale:t.effectiveScale,rung:t.rung,inventory:{totalBookableUnits:t.totalBookableUnits,totalLabelledBookableUnits:t.totalLabelledBookableUnits,visibleBookableLabels:n.length,hiddenBookableLabels:t.hiddenLabels,visibleHierarchyLabels:r.length,visibleFreeTextLabels:o.length,visibleGAAreas:s.length},overviewStyle:t.overviewStyle,composition:{hierarchy:t.hierarchyLabels.filter(v=>v.role==="name").map(v=>({id:v.id,kind:v.kind,label:v.label,visible:v.visible})).sort((v,T)=>v.kind.localeCompare(T.kind)||v.id.localeCompare(T.id)),labelledObjects:t.freeTextLabels.map(v=>({objectId:v.objectId,kind:v.kind,text:v.text,visible:v.visible})).sort((v,T)=>v.objectId.localeCompare(T.objectId)||v.kind.localeCompare(T.kind)),gaAreas:t.gaAreas.map(v=>({areaId:v.areaId,label:v.label,categoryKey:v.categoryKey,...v.sectionId?{sectionId:v.sectionId}:{},visible:v.visible})).sort((v,T)=>v.areaId.localeCompare(T.areaId)),bookableSectionIds:[...new Set(t.labels.flatMap(v=>v.sectionId?[v.sectionId]:[]))].sort(),categoryKeys:[...new Set([...t.labels.map(v=>v.categoryKey),...t.gaAreas.map(v=>v.categoryKey)])].sort(),activeCategoryKeys:[...g].sort()},metrics:{minimumRenderedBookableLabelPx:Se(n.map(v=>v.renderedFontPx)),minimumBookableLabelContrast:Se(a),minimumRenderedHierarchyLabelPx:Se(r.map(v=>v.renderedFontPx)),minimumHierarchyLabelContrast:Se(l),minimumRenderedFreeTextPx:Se(o.map(v=>v.renderedFontPx)),minimumFreeTextContrast:Se(c),minimumGAContrast:Se(d),minimumEffectivePointerTargetPx:Se(h.map(v=>v.pointerTarget.effectiveMinimumPx)),selectedRingContrast:S==null?null:Math.round(S*100)/100},interaction:{applicable:{detail:p.length>0||u.length>0,pointer:p.length>0||u.length>0,held:p.length>=2,booked:p.length>=3,sectionFocus:p.some(v=>!!v.sectionId)||u.some(v=>!!v.sectionId),categoryFilter:new Set([...t.labels.map(v=>v.categoryKey),...t.gaAreas.map(v=>v.categoryKey)]).size>=2},selectedUnits:m.length,heldUnits:b.length,bookedUnits:f.length,activePointerTargets:h.length,focusedSectionId:t.focusedSectionId,focusBackdropVisible:t.focusBackdropVisible,categoryFilterKeys:t.categoryFilterKeys},findings:R}}var Tt=require("konva/lib/Core"),Vo=require("konva/lib/Stage"),ci=require("konva/lib/Layer"),Le=require("konva/lib/Group"),ve=require("konva/lib/shapes/Circle"),Ee=require("konva/lib/shapes/Rect"),et=require("konva/lib/shapes/Line"),Ce=require("konva/lib/shapes/Text"),jo=require("konva/lib/shapes/Path"),Wo=require("konva/lib/shapes/Image"),Ko=require("konva/lib/Shape");function ya(t){let e=0;for(let i=0,n=t.length;i<n;i+=1){let r=t[i],o=t[(i+1)%n];e+=r.x*o.y-o.x*r.y}return e/2}function ht(t){return ya(t)*2}function Xe(t){let e=t.backgroundImage;return e?.url&&!e.assetId?e:void 0}var Sa=9;function va(t){if(t.kind==="circle")return{hx:t.r,hy:t.r};let e=t.width/2,i=t.height/2,n=t.rotation??0;if(!n)return{hx:e,hy:i};let r=n*Math.PI/180,o=Math.abs(Math.cos(r)),s=Math.abs(Math.sin(r));return{hx:e*o+i*s,hy:e*s+i*o}}function ka(t,e,i,n,r){if(t.shape.kind==="circle"){let b=Math.min(Math.max(t.seat.x,e),n),f=Math.min(Math.max(t.seat.y,i),r),h=t.seat.x-b,g=t.seat.y-f;return h*h+g*g<=t.shape.r*t.shape.r}let o=t.shape.rotation??0;if(!o)return t.seat.x-t.hx<=n&&t.seat.x+t.hx>=e&&t.seat.y-t.hy<=r&&t.seat.y+t.hy>=i;let s=o*Math.PI/180,a=Math.cos(s),l=Math.sin(s),c=t.shape.width/2,d=t.shape.height/2,p=[[-c,-d],[c,-d],[c,d],[-c,d]].map(([b,f])=>[t.seat.x+b*a-f*l,t.seat.y+b*l+f*a]),u=[[e,i],[n,i],[n,r],[e,r]],m=[[1,0],[0,1],[a,l],[-l,a]];for(let[b,f]of m){let h=1/0,g=-1/0;for(let[x,I]of p){let k=x*b+I*f;k<h&&(h=k),k>g&&(g=k)}let S=1/0,y=-1/0;for(let[x,I]of u){let k=x*b+I*f;k<S&&(S=k),k>y&&(y=k)}if(g<S||y<h)return!1}return!0}function yr(t,e={}){let i=e.seatRadius??Sa,n=t.length,r=new Array(n),o=1/0,s=1/0,a=-1/0,l=-1/0,c=0;for(let k=0;k<n;k++){let w=t[k],M=e.shapeOf?.(w)??{kind:"circle",r:i},{hx:C,hy:L}=va(M);r[k]={seat:w,shape:M,hx:C,hy:L},w.x-C<o&&(o=w.x-C),w.y-L<s&&(s=w.y-L),w.x+C>a&&(a=w.x+C),w.y+L>l&&(l=w.y+L),C>c&&(c=C),L>c&&(c=L)}n===0&&(o=0,s=0,a=0,l=0);let d=c>0?c*4:1,p=Math.max(a-o,0),u=Math.max(l-s,0),m=Math.max(64,e.maxCells??n*4),b=d,f=Math.max(1,Math.ceil(p/b)||1),h=Math.max(1,Math.ceil(u/b)||1);for(;f*h>m&&(f>1||h>1);)b*=2,f=Math.max(1,Math.ceil(p/b)||1),h=Math.max(1,Math.ceil(u/b)||1);let g=f*h,S=new Int32Array(g+1),y=0;for(let k=0;k<n;k++){let w=r[k],M=me(Math.floor((w.seat.x-w.hx-o)/b),0,f-1),C=me(Math.floor((w.seat.x+w.hx-o)/b),0,f-1),L=me(Math.floor((w.seat.y-w.hy-s)/b),0,h-1),R=me(Math.floor((w.seat.y+w.hy-s)/b),0,h-1);for(let v=L;v<=R;v++)for(let T=M;T<=C;T++)S[v*f+T+1]++,y++}for(let k=0;k<g;k++)S[k+1]+=S[k];let x=new Int32Array(y),I=S.slice(0,g);for(let k=0;k<n;k++){let w=r[k],M=me(Math.floor((w.seat.x-w.hx-o)/b),0,f-1),C=me(Math.floor((w.seat.x+w.hx-o)/b),0,f-1),L=me(Math.floor((w.seat.y-w.hy-s)/b),0,h-1),R=me(Math.floor((w.seat.y+w.hy-s)/b),0,h-1);for(let v=L;v<=R;v++)for(let T=M;T<=C;T++){let E=v*f+T;x[I[E]++]=k}}return{seats:t,entries:r,minX:o,minY:s,cell:b,cols:f,rows:h,cellStart:S,items:x,stamp:new Int32Array(n),epoch:0}}function Kt(t,e,i={}){let n=Math.min(e.x,e.x+e.width),r=Math.max(e.x,e.x+e.width),o=Math.min(e.y,e.y+e.height),s=Math.max(e.y,e.y+e.height),a=i.mode??"center",{cols:l,rows:c,cell:d,minX:p,minY:u,cellStart:m,items:b,entries:f}=t,h=Math.max(0,Math.floor((n-p)/d)),g=Math.min(l-1,Math.floor((r-p)/d)),S=Math.max(0,Math.floor((o-u)/d)),y=Math.min(c-1,Math.floor((s-u)/d));if(h>g||S>y)return[];let x=[],I=t.stamp,k=++t.epoch;for(let w=S;w<=y;w++){let M=w*l;for(let C=h;C<=g;C++){let L=M+C,R=m[L+1];for(let v=m[L];v<R;v++){let T=b[v];if(I[T]===k)continue;I[T]=k;let E=f[T];if(i.filter&&!i.filter(E.seat.id,E.seat))continue;(a==="center"?E.seat.x>=n&&E.seat.x<=r&&E.seat.y>=o&&E.seat.y<=s:ka(E,n,o,r,s))&&x.push(T)}}}return x.sort((w,M)=>w-M),x.map(w=>f[w].seat.id)}function Sr(t,e=0){let i=Math.max(1,t.width,t.height),n={x:t.x+t.width/2,y:t.y+t.height/2},r=i*1.55,o=Math.max(i*.82,Math.max(0,e)+i*.45);return{target:n,distance:r,height:o,focalLength:Math.hypot(r,o),yawRad:-8*Math.PI/180}}function ie(t,e,i=0){let n=e.x-t.target.x,r=e.y-t.target.y,o=Math.cos(t.yawRad),s=Math.sin(t.yawRad),a=n*o-r*s,c=n*s+r*o-t.distance,d=i-t.height,p=Math.hypot(t.distance,t.height),u=(-t.distance*c-t.height*d)/p,m=(-t.height*c+t.distance*d)/p,b=Math.max(p*.08,u),f=t.focalLength/b;return{x:t.target.x+a*f,y:t.target.y-m*f,depth:b,scale:f}}function re(t,e){return{x:t.a*e.x+t.c*e.y+t.e,y:t.b*e.x+t.d*e.y+t.f}}function vr(t){let e=t.a*t.d-t.b*t.c;if(!Number.isFinite(e)||Math.abs(e)<1e-9)throw new Error("perspective projection produced a singular affine");let i=t.d/e,n=-t.b/e,r=-t.c/e,o=t.a/e;return{a:i,b:n,c:r,d:o,e:-(i*t.e+r*t.f),f:-(n*t.e+o*t.f)}}function kr(t,e){return{a:t.a*e.a+t.c*e.b,b:t.b*e.a+t.d*e.b,c:t.a*e.c+t.c*e.d,d:t.b*e.c+t.d*e.d,e:t.a*e.e+t.c*e.f+t.e,f:t.b*e.e+t.d*e.f+t.f}}function Ut(t,e,i=()=>0){let n=ie(t,e,i(e)),r={x:e.x+1,y:e.y},o={x:e.x,y:e.y+1},s=ie(t,r,i(r)),a=ie(t,o,i(o)),l=s.x-n.x,c=s.y-n.y,d=a.x-n.x,p=a.y-n.y;return{a:l,b:c,c:d,d:p,e:n.x-l*e.x-d*e.y,f:n.y-c*e.x-p*e.y}}function xr(t){let e=Math.hypot(t.a,t.b),i=t.a*t.d-t.b*t.c;return{rotationDeg:Math.atan2(t.b,t.a)*180/Math.PI,scaleX:e,scaleY:i/Math.max(e,1e-9),skewX:(t.a*t.c+t.b*t.d)/Math.max(i,1e-9)}}var Ir;function Tr(t){Ir=t}function xa(t){return typeof t=="number"?t:t instanceof Date?t.getTime():Date.parse(t)}var wr=new Map;function wa(t,e){let i=t??Ir,n=`${i??""}|${JSON.stringify(e)}`,r=wr.get(n);return r||(r=new Intl.DateTimeFormat(i,e),wr.set(n,r)),r}var Ia={dateStyle:"medium",timeStyle:"short"};function Lr(t,e={}){let{locale:i,...n}=e,r=xa(t);if(!Number.isFinite(r))return"";let o=Object.keys(n).length?n:Ia;return wa(i,o).format(r)}var Mc="USD",Ta=["USD","EUR","GBP","CAD","AUD","INR","AED","SGD","JPY","CHF","SEK","NZD","ZAR","MXN","BRL"],Mr;function qi(t){Mr=t}var Cr=new Map;function Xt(t,e,i,n){let r=n??Mr,o=`${r??""}|${t}|${e??"auto"}|${i??"auto"}`,s=Cr.get(o);return s||(s=new Intl.NumberFormat(r,{style:"currency",currency:t,minimumFractionDigits:e,maximumFractionDigits:i}),Cr.set(o,s)),s}function Yt(t,e="USD",i,n){if(typeof i=="object"){let o=i;try{return Xt(e,o.minimumFractionDigits,o.maximumFractionDigits,o.locale).format(t)}catch(s){if(o.fallback)return o.fallback(t,e);throw s}}let r=i??(Number.isInteger(t)?0:void 0);return Xt(e,r,r,n).format(t)}function Pr(t="USD"){try{return Xt(t,void 0,void 0).resolvedOptions().maximumFractionDigits??2}catch{return 2}}function Rr(t,e="USD"){return t/10**Pr(e)}function La(t,e="USD",i){return Yt(Rr(t,e),e,void 0,i)}function Ca(t="USD"){return Xt(t,0,0).formatToParts(0).find(i=>i.type==="currency")?.value??t}var pt={"common.cancel":"Cancel","common.close":"Close","common.done":"Done","common.copied":"\u2713 Copied","picker.holdExpired":"Your hold expired \u2014 the seats were released. Pick again.","picker.poweredBy":"Powered by SeatLayer","picker.testMode":"TEST MODE","picker.orphanHint":"This leaves a single seat stranded \u2014 consider shifting one seat over.","picker.companionRequiresWheelchair":"Requires the adjacent wheelchair place","picker.companionPairRequired":"Select the adjacent wheelchair place with each companion ticket.","map.aria":"Seating map. Use arrow keys to move between seats, Enter to select.","map.seatsLeft":"{count} LEFT","map.soldOut":"SOLD OUT","map.fromPrice":"FROM {price}","map.statusHeld":"On hold","map.statusTaken":"Taken","picker.floor":"Floor","picker.zoomLevel":"Zoom level","picker.rungTip.zones":"Venue overview \u2014 groups of sections such as North Stand or VIP","picker.rungTip.sections":"Section blocks \u2014 sold-out and nearly-gone sections shade to show availability at a glance","picker.rungTip.seats":"Individual seats \u2014 blocks melt into dots","picker.rungLabel.zones":"ZONES","picker.rungLabel.sections":"SECTIONS","picker.rungLabel.seats":"SEATS","picker.sectionSummaryAria":"{label} section summary","picker.closeSectionSummary":"Close section summary","picker.seatsLeftInSection.one":"{count} seat left","picker.seatsLeftInSection.other":"{count} seats left","picker.overview":"Overview","picker.entrance":"Entrance","picker.tapSeatHint":"Tap any seat to check its view","picker.ticketTierFor":"Ticket tier for {label}","picker.viewFromSeat":"View from seat {label}","picker.real360":"REAL 360\xB0","picker.preview":"PREVIEW","picker.sightline":"\u2248 {m} m to stage","picker.panorama360":"360\xB0 venue photo","picker.illustrationCaption":"illustration \xB7 \u2248 {m} m from stage","picker.restrictedView":"Restricted view","picker.obstructedView":"Obstructed view","picker.premiumSeat":"Premium seat","picker.hideLimitedView":"Hide limited-view seats","picker.bestSeatsPremium":"Best seats","picker.premiumFallbackNote":"No premium block of {count} \u2014 showing best overall","picker.loading3d":"Building the 3D venue\u2026","picker.unavailable3d":"3D could not start. The seat map is still available.","picker.jumpToSection":"Jump to section","picker.salesClosedPill":"Sales are closed","picker.salesClosedCopy":"Ticket sales for this event have ended.","picker.salesClosedCta":"Sales closed","picker.salesClosedToast":"Sales are closed for this event.","picker.holdReassurance":"Yours for {time} \u2014 you won\u2019t be charged yet.","picker.securingSeats":"Securing your seats\u2026","picker.openingCheckout":"Opening secure checkout\u2026","picker.peekSecured":"\u2713 {count} secured \xB7 {total} \u2014 you won\u2019t be charged yet","picker.priceHint":"Colours on the map are ticket types \u2014 tap one below to show just those seats.","picker.findTogetherInstead":"Find seats together instead","picker.keepMyPicks":"Keep my picks","picker.accessExpiredBody":"Sign in again, or reload the page, to keep browsing these seats. Anything you are already holding stays yours.","picker.accessExpiredTitle":"Your access session has ended","picker.accessInvalidBody":"You can still book anything shown as available. Contact whoever sent you here for access to the rest.","picker.accessInvalidTitle":"We couldn\u2019t verify your access","picker.accessPausedBody":"The organizer has paused this selection. Try again in a few minutes.","picker.accessPausedTitle":"These seats are on hold right now","picker.accessRetry":"Try again","picker.accessRevokedBody":"Ask whoever sent you here for a new link to keep booking these seats.","picker.accessRevokedTitle":"This access link is no longer active","picker.accessiblePhysicalSeat":"Accessible physical seat","picker.addTime":"Add time","picker.addingEllipsis":"Adding\u2026","picker.allLevels":"All levels","picker.allPlacesBookedTogether":"All {count} places are booked together as one exclusive table.","picker.allPrices":"All prices","picker.allSeats":"All seats","picker.allSetTitle":"You\u2019re all set","picker.anyTicketType":"Any ticket type","picker.anyVenueZone":"Any venue zone","picker.areas":"Areas","picker.available":"Available","picker.backToMap":"Back to map","picker.backToVenue":"Back to venue","picker.bestSeatsStar":"\u2726 Best seats","picker.booth":"Booth","picker.capacityGuests":"{count} guests","picker.change":"Change","picker.chartDerivedModel":"Chart-derived model","picker.chartDerivedSeatEye":"Live 3D \xB7 chart-derived seat-eye \xB7 not surveyed","picker.checkConnection":"Check your connection and try again.","picker.checkoutCouldNotBeOpened":"Checkout could not be opened. Your seats are still held \u2014 please try again.","picker.chooseAnotherToCompare":"Choose another seat to compare.","picker.chooseGuestsCopy":"Choose how many guests will sit together. This table is held exclusively for your party.","picker.chooseMinMaxGuests":"Choose {min}\u2013{max} guests","picker.clearSavedSeatComparison":"Clear saved seat comparison","picker.close":"Close","picker.closeSeatStatus":"Close seat status","picker.closestGroupChosenInstantly":"Closest available group, chosen instantly.","picker.collapseTicketPanel":"Collapse ticket panel","picker.compareCount":"Compare {count}","picker.compareWithSaved":"Compare with saved","picker.confirmOrCancelSeat":"Confirm or cancel this seat","picker.confirmSeatLabel":"Confirm seat {label}","picker.confirmYourTable":"Confirm your table","picker.confirmedAndOnWay":"confirmed. A confirmation is on its way.","picker.continue":"Continue","picker.continueToCheckout":"Continue to checkout","picker.couldNotAddMoreTime":"Couldn\u2019t add more time \u2014 please head to checkout now.","picker.couldNotFindSeatsTogether":"We couldn\u2019t find {count} seats together. Try fewer seats or another ticket type.","picker.couldNotReleaseTickets":"Couldn\u2019t release your tickets. Your hold is unchanged.","picker.couldNotRemoveLabel":"Couldn\u2019t remove {label}. Your hold is unchanged.","picker.currentOffer":"Current offer","picker.currentTicketOffer":"Current ticket offer","picker.dragToLookAround":"Drag to look around \xB7 scroll to zoom","picker.emptyWheelchairSpace":"Empty wheelchair space","picker.exitFullScreen":"Exit full screen","picker.fewer":"Fewer","picker.fewerGuests":"Fewer guests","picker.fewerSeats":"Fewer seats","picker.filterAndFocusByPrice":"Filter and focus seats by price","picker.filters":"Filters","picker.findBestSeatsCount.one":"Find {count} best seat","picker.findBestSeatsCount.other":"Find {count} best seats","picker.findBestSeatsTogether":"Find the best seats together","picker.findNewSeats":"Find new seats","picker.findingBestSeats":"Finding the best seats\u2026","picker.findingEllipsis":"Finding\u2026","picker.fitToScreen":"Fit to screen","picker.flat2dMap":"Flat 2D map","picker.flexiblePartyTypeWord":"Flexible party \xB7 {typeWord}","picker.fullScreen":"Full screen","picker.generalAdmission":"General admission","picker.guestCountCouldNotBeSecured":"That guest count could not be secured. Your current table hold is unchanged.","picker.guestCountNoLongerAvailable":"That guest count is no longer available. Your current hold is unchanged.","picker.guests":"Guests","picker.guestsCount":"{count} guests","picker.guestsCountEdit":"{count} guests \xB7 Edit","picker.held":"Held","picker.heldForYou":"Held for you","picker.heldSeatExplanation":"Another buyer is holding this seat. It may become available again.","picker.heldTicketsReleased":"Held tickets released. Choose your new seats.","picker.heldTicketsRestored":"Your held tickets have been restored.","picker.hidePanel":"Hide panel","picker.hideTicketPanel":"Hide the ticket panel","picker.holdSeatsAndCheckout":"Hold seats & checkout","picker.howOfferWorks":"How the {name} offer works","picker.interactive3dVenueView":"Interactive 3D venue view","picker.keepMine":"Keep mine","picker.labelNoLongerAvailable":"{label} is no longer available.","picker.labelRemoved":"{label} removed.","picker.labelRemovedFromHold":"{label} removed from your hold.","picker.labelRestored":"{label} restored.","picker.labelsNoLongerAvailable.one":"{labels} is no longer available. Choose another seat.","picker.labelsNoLongerAvailable.other":"{labels} are no longer available. Choose another group.","picker.leftCount.one":"{count} left","picker.leftCount.other":"{count} left","picker.levelNumber":"Level {number}","picker.levels":"Levels","picker.liveAvailability":"Live availability \u2014 seats update in real time","picker.loadingSeatMap":"Loading seat map\u2026","picker.lookAroundLive3d":"Look around in live 3D","picker.manualTicketsRemovedNote":"Your manually selected tickets will be removed only after a new group is secured.","picker.map":"Map","picker.mapDidNotLoad":"The seat map didn\u2019t load","picker.maxTicketsForOrder":"You can select up to {count} tickets for this order.","picker.selectExactMore":"Select {count} more","picker.selectExactCount":"Select exactly {count} tickets","picker.selectMinimumMore":"Select {count} more","picker.adjustSeatSelection":"Adjust seat selection","picker.selectSeatsTogether":"Choose seats together in the same row and ticket category.","picker.minToMaxGuests":"{min} to {max} guests","picker.more":"More","picker.moreGuests":"More guests","picker.moreSeats":"More seats","picker.moreSelectedCount":"{count} more selected","picker.moreTimeAdded":"More time added \u2014 your seats are still held.","picker.noAccessibilityMetadata":"No accessibility metadata supplied","picker.noAuthoredRestriction":"No organizer-authored restriction","picker.noSeatsSelected":"No seats selected","picker.notChargedYet":"You won\u2019t be charged yet.","picker.notForSale":"Not for sale","picker.notForSaleExplanation":"This seat is not included in the current sale.","picker.numberOfGuests":"Number of guests","picker.offerDetailActive":"This price applies automatically to eligible seats. Tickets in active carts temporarily reduce the available quantity; released or expired holds return it. When the offer ends, the next matching offer or normal ticket price takes over.","picker.offerDetailUpcoming":"Tickets are available at their normal price now. This scheduled offer will apply automatically to eligible seats when it starts.","picker.offerRemainingAvailable":"{count} available","picker.offerStarts":"starts {time}","picker.offerUntil":"until {time}","picker.oneSeatSaved":"1 seat saved","picker.oneSeatSavedChooseAnother":"One seat saved; choose another to compare","picker.openAuthored360":"Open venue 360\xB0","picker.openComparison":"Open comparison","picker.openComparisonOfSeats":"Open comparison of {count} seats","picker.openTicketPanel":"Open ticket panel","picker.peekFromPrice":"From {price}","picker.peekTicketsTotal.one":"{count} ticket \xB7 {total}","picker.peekTicketsTotal.other":"{count} tickets \xB7 {total}","picker.perGuestPrice":"{price} per guest","picker.pickYourSeats":"Pick your seats","picker.preferredTicketType":"Preferred ticket type","picker.preferredVenueZone":"Preferred venue zone","picker.priceNotSupplied":"Price not supplied","picker.releaseHeldTickets":"Release held tickets and choose different seats","picker.releasingEllipsis":"Releasing\u2026","picker.removeHeldTicketLabel":"Remove held ticket {label}","picker.removeSeatLabel":"Remove {label}","picker.removeTicketsUntilOrFewer":"Remove tickets until your order has {count} or fewer.","picker.replaceCurrentChoices":"Replace your current choices?","picker.review":"Review","picker.row":"Row","picker.rowLabel":"Row {label}","picker.saveToCompare":"Save to compare","picker.savedForComparison":"Saved for comparison","picker.savedSeatComparison":"Saved seat comparison","picker.scheduledOffer":"Scheduled offer","picker.seat":"Seat","picker.seatCount.one":"{count} seat","picker.seatCount.other":"{count} seats","picker.seatJustTakenByAnother":"Seat {label} was just taken by another buyer.","picker.seatLabel":"Seat {label}","picker.seatNoLongerAvailable":"That seat is no longer available.","picker.seatNoLongerYours":"Some seats are no longer available to you. They have been removed from your order.","picker.seatNumberLower":"seat {label}","picker.seatSalesClosedForEvent":"Seat sales have closed for this event.","picker.seatSelection":"Seat selection","picker.seatStatusLegend":"Seat status legend","picker.seatTaken":"Someone else took a seat you had picked. It has been removed from your order.","picker.seatsHeldForNeedMoreTime":"Your seats are held for <b>{time}</b>. Need more time?","picker.seatsJustTaken":"One or more seats were just taken. Please pick again.","picker.seatsJustTakenInCategory.one":"{count} seat just taken in {label} \xB7 {left} left","picker.seatsJustTakenInCategory.other":"{count} seats just taken in {label} \xB7 {left} left","picker.seatsNoLongerAvailableTryAnother":"Those seats are no longer available. Try another quantity or ticket type.","picker.seatsSecured":"Seats secured","picker.seatsSelectedCount.one":"{count} selected","picker.seatsSelectedCount.other":"{count} selected","picker.section":"Section","picker.secureMore":"Secure more","picker.secureMoreAndCheckout":"Secure {count} more & checkout","picker.securedCount":"{count} secured","picker.seeItIn3d":"See it in 3D","picker.select":"Select","picker.selectSeats":"Select seats","picker.selectTable":"Select table","picker.selectWholeTable":"Select whole table","picker.selected":"Selected","picker.selectingEllipsis":"Selecting\u2026","picker.showAllSeats":"Show all seats","picker.showAllTicketTypes":"Show all {count} ticket types","picker.showFewer":"Show fewer","picker.showLabelSeatsOnMap":"Show {label} seats on the map","picker.showTicketPanel":"Show the ticket panel","picker.sold":"Sold","picker.soldOutCopy":"No reserved seats are currently available for this event.","picker.soldOutEyebrow":"This event","picker.soldOutTitle":"Sold out","picker.soldSeatExplanation":"This seat has already been booked.","picker.statusAvailable":"available","picker.statusOnHold":"on hold","picker.statusTaken2":"taken","picker.table":"Table","picker.tableCapacity":"Table capacity","picker.tableUpdatedForGuests":"{label} updated for {count} guests.","picker.temporarilyHeld":"Temporarily held","picker.ticketPrices":"Ticket prices","picker.ticketTypeSoldOut":"That ticket type is sold out. Try another ticket type.","picker.tickets":"Tickets","picker.ticketsCount.one":"{count} ticket","picker.ticketsCount.other":"{count} tickets","picker.toggleColorblindColors":"Toggle colorblind-friendly colors","picker.total":"Total","picker.trayHintTapOrBest":"Tap a seat on the map, or let us pick the best available for you.","picker.trayHintTapOrStanding":"Tap a seat on the map \u2014 or grab standing tickets below.","picker.undo":"Undo","picker.upcomingTicketOffer":"Upcoming ticket offer","picker.updateTable":"Update table","picker.updatingEllipsis":"Updating\u2026","picker.venueView":"Venue view","picker.viewFromHere":"View from here","picker.viewFromThisSeat":"View from this seat","picker.wholeTypeWord":"Whole {typeWord}","picker.willChooseClosestGroup":"We\u2019ll choose the closest available group for you.","picker.willFindSeatsTogether":"We\u2019ll find {count} seats together.","picker.yourSeats":"Your seats","picker.zoomIn":"Zoom in","picker.zoomOut":"Zoom out","picker.closeVenueNav":"Close","picker.levelsAndAreas":"Levels & areas"};var Er=["en","es","de","fr"],Ye={en:pt},qt={},de="en";function $i(t,e){for(let i of[t,e,typeof navigator<"u"?navigator.language:null]){if(!i)continue;let n=i.toLowerCase().split("-")[0];if(Er.includes(n))return n}return"en"}function Ma(){return de}function ft(t,e){e&&(Ye[t]={...Ye[t],...e}),de=Ye[t]?t:"en",qi(de),Tr(de),typeof document<"u"&&(document.documentElement.lang=de)}function Pa(t){qt=t}var Ar=/\{(\w+)\}/g;function oe(t,e){let i=qt[t]??Ye[de]?.[t]??pt[t]??t;return e?i.replace(Ar,(n,r)=>String(e[r]??`{${r}}`)):i}function Ra(t,e,i){let n=new Intl.PluralRules(de).select(e);return(qt[`${t}.${n}`]??Ye[de]?.[`${t}.${n}`]??pt[`${t}.${n}`]??qt[`${t}.other`]??Ye[de]?.[`${t}.other`]??pt[`${t}.other`]??t).replace(Ar,(s,a)=>String({count:e,...i}[a]??`{${a}}`))}function Ea(t,e){return Lr(t,{...e??{dateStyle:"medium",timeStyle:"short"},locale:de})}var mt=9,Pe=.9,se=.55*Pe,ue=Q/ye,bt=4,$t=14,Br=10,Or=14,Te=.45*Pe,qe=.9*Pe,Fr=Math.max(Pe*1.1,qe),Re=8,Dr=700,ee=2,_r=Q,gt=64,$e=.55*Te,Zi=700,zr=2500,Zt=-11.5,yt=.58,Nr=320,Qt=650,Gr=1,Jt=1,Hr=20,Qi=12,Vr=[.85,.72,.62],ei=18,jr=12,Wr=.1;var Aa="#e5e7eb",Ba="#c7cbd1",Oa="#595f69",Fa="#d1d5db",Da="#b8bdc4",_a="#273142",za="#526078",Na="#f1f5f9",Ga="#374151",Ha="#64748b",Ji="#111827",Kr="#6b7280",ti="#374151",Ur="#4b5563",Xr="#4b5563",Yr=.4,St=.16,qr="rgba(244,246,248,0.06)",ii=["#E69F00","#56B4E9","#009E73","#F0E442","#0072B2","#D55E00","#CC79A7"];function he(t){return ut(t)?{sectionFill:Aa,sectionStroke:Ba,sectionInk:Oa,focalFill:Fa,focalStroke:Da}:{sectionFill:_a,sectionStroke:za,sectionInk:Na,focalFill:Ga,focalStroke:Ha}}function Ze(t,e){let i=t.sectionFill,n=dr(ge(i,.2),.85);switch(e){case"closed":return ge(i,.12);case"sold-out":return n;case"nearly-gone":return zt(i,n,.4);default:return i}}function Va(t,e){return t.x<e.x+e.width&&e.x<t.x+t.width&&t.y<e.y+e.height&&e.y<t.y+t.height}var Qe=class{constructor(){this.cells=new Map}insert(e){for(let i of this.keys(e)){let n=this.cells.get(i);n?n.push(e):this.cells.set(i,[e])}}collisionCount(e){let i=new Set,n=0;for(let r of this.keys(e))for(let o of this.cells.get(r)??[])i.has(o)||(i.add(o),Va(e,o)&&n++);return n}keys(e){let i=Math.floor(e.x/gt),n=Math.floor((e.x+Math.max(0,e.width))/gt),r=Math.floor(e.y/gt),o=Math.floor((e.y+Math.max(0,e.height))/gt),s=[];for(let a=r;a<=o;a++)for(let l=i;l<=n;l++)s.push(`${l}:${a}`);return s}};function ja(t){let e=1/0,i=1/0,n=-1/0,r=-1/0,o=!1;for(let s of t)!Number.isFinite(s.x)||!Number.isFinite(s.y)||(o=!0,s.x<e&&(e=s.x),s.y<i&&(i=s.y),s.x>n&&(n=s.x),s.y>r&&(r=s.y));return o?{minX:e,minY:i,maxX:n,maxY:r}:null}function $r(t){let e=ja(t);return e?Wa(e):null}function Wa(t){return{x:t.minX,y:t.minY,width:t.maxX-t.minX,height:t.maxY-t.minY}}function U(t){let e=$r(t);return e?{x:e.x,y:e.y,width:Math.max(1,e.width),height:Math.max(1,e.height)}:{x:0,y:0,width:1,height:1}}function ni(t,e,i,n){let r=n*Math.PI/180,o=Math.cos(r),s=Math.sin(r);return[{x:-e/2,y:-i/2},{x:e/2,y:-i/2},{x:e/2,y:i/2},{x:-e/2,y:i/2}].map(a=>({x:t.x+a.x*o-a.y*s,y:t.y+a.x*s+a.y*o}))}function ri(t,e,i,n,r,o){let s=n*Math.PI/180,a=Math.cos(s),l=Math.sin(s);for(let c=0;c<=4;c++)for(let d=0;d<=6;d++){let p=e*(d/6-.5),u=i*(c/4-.5),m={x:t.x+p*a-u*l,y:t.y+p*l+u*a};if(!Y(m,r,o))return!1}return!0}function Zr(t,e,i){let n=U(t),r=[i];for(let s=1;s<12;s+=1)for(let a=1;a<12;a+=1){let l={x:n.x+n.width*a/12,y:n.y+n.height*s/12};Y(l,t,e)&&r.push(l)}let o=[t,...e];return r.map(s=>({point:s,room:wi(s,o)})).sort((s,a)=>a.room-s.room).map(s=>s.point).filter((s,a,l)=>a===l.findIndex(c=>Math.abs(c.x-s.x)<1e-6&&Math.abs(c.y-s.y)<1e-6))}var Qr=require("konva/lib/Group"),Jr=require("konva/lib/Shape");function Ka(t,e,i){let n=e.length,r={x:(e[n-1].x+e[0].x)/2,y:(e[n-1].y+e[0].y)/2};t.moveTo(r.x,r.y);for(let o=0;o<n;o+=1){let s=e[o],a=e[(o+1)%n],l=e[(o-1+n)%n],c=Math.min(Math.hypot(s.x-l.x,s.y-l.y)/2,Math.hypot(a.x-s.x,a.y-s.y)/2);t.arcTo(s.x,s.y,a.x,a.y,Math.max(0,Math.min(i,c)))}t.closePath()}function Je(t,e,i,n){let r=ht(t)>0,o=i.cornerRadius&&i.cornerRadius>0?i.cornerRadius:0;return new Jr.Shape({...i,sceneFunc(s,a){s.beginPath();let l=d=>{if(d.length){if(o>0&&d.length>=3)return Ka(s,d,o);s.moveTo(d[0].x,d[0].y);for(let p=1;p<d.length;p+=1)s.lineTo(d[p].x,d[p].y);s.closePath()}};n?(d=>{s.moveTo(d.start.x,d.start.y);let p=d.start;for(let u of d.segments)u.kind==="line"?s.lineTo(u.end.x,u.end.y):u.kind==="arc"?s.arc(u.center.x,u.center.y,u.radius,Math.atan2(p.y-u.center.y,p.x-u.center.x),Math.atan2(u.end.y-u.center.y,u.end.x-u.center.x),!u.clockwise):s.bezierCurveTo(u.control1.x,u.control1.y,u.control2.x,u.control2.y,u.end.x,u.end.y),p=u.end;s.closePath()})(n):l(t);for(let d of e??[]){let p=ht(d)>0;l(p===r?[...d].reverse():d)}s.fillStrokeShape(a)},perfectDrawEnabled:!1})}var vt=class extends Qr.Group{constructor(){super(...arguments);this.viewportCulled=!1}setViewportCulled(i){i!==this.viewportCulled&&(this.viewportCulled=i,i||super._clearSelfAndDescendantCache())}isViewportCulled(){return this.viewportCulled}drawScene(...i){return this.viewportCulled?this:super.drawScene(...i)}drawHit(...i){return this.viewportCulled?this:super.drawHit(...i)}_clearSelfAndDescendantCache(i){if(!this.viewportCulled){super._clearSelfAndDescendantCache(i);return}this._clearCache(i)}};var oi=class{constructor(e){this.pointers=new Map;this.pinch=null;this.panLast=null;this.panStart=null;this.panStarted=!1;this.movedPx=0;this.lastTapAt=0;this.onPointerDown=e=>{this.host.cancelGlide();let i=this.toLocal(e);if(this.pointers.set(e.pointerId,i),this.pointers.size===1)this.movedPx=0,this.pinch=null,this.panStart=i,this.panStarted=!1,this.host.marqueeShouldStart(e)?(this.host.beginMarquee(i),this.panLast=null):this.panLast=i;else if(this.pointers.size===2){this.host.marqueeActive()&&this.host.cancelMarquee();let[n,r]=[...this.pointers.values()],o={x:(n.x+r.x)/2,y:(n.y+r.y)/2},s=this.host.stage.scaleX();this.pinch={startDist:Math.hypot(r.x-n.x,r.y-n.y),startScale:s,worldMid:{x:(o.x-this.host.stage.x())/s,y:(o.y-this.host.stage.y())/s}},this.panLast=null,this.panStart=null,this.panStarted=!0,this.movedPx=Re+1}};this.onPointerMove=e=>{if(!this.pointers.has(e.pointerId))return;e.preventDefault();let i=this.toLocal(e);if(this.pointers.set(e.pointerId,i),this.pointers.size===1&&this.panStart?this.movedPx=Math.max(this.movedPx,Math.hypot(i.x-this.panStart.x,i.y-this.panStart.y)):this.pointers.size>=2&&(this.movedPx=Re+1),this.host.marqueeActive()){this.host.updateMarquee(i);return}if(this.pinch&&this.pointers.size>=2){this.host.releaseSectionFocusDim();let[n,r]=[...this.pointers.values()],o=Math.hypot(r.x-n.x,r.y-n.y);if(this.pinch.startDist<1)return;let s={x:(n.x+r.x)/2,y:(n.y+r.y)/2},{min:a,max:l}=this.host.zoomBounds(),c=j(this.pinch.startScale*(o/this.pinch.startDist),a,l);this.host.stage.scale({x:c,y:c}),this.host.stage.position({x:s.x-this.pinch.worldMid.x*c,y:s.y-this.pinch.worldMid.y*c}),this.host.updateSeatGroupVisibility(),this.host.stage.batchDraw(),this.host.scheduleViewChange()}else if(this.panLast&&this.pointers.size===1){if(!this.panStarted){if(this.movedPx<=Re)return;this.panStarted=!0,this.host.releaseSectionFocusDim()}this.host.stage.position({x:this.host.stage.x()+(i.x-this.panLast.x),y:this.host.stage.y()+(i.y-this.panLast.y)}),this.panLast=i,this.host.updateSeatGroupVisibility(),this.host.stage.batchDraw(),this.host.scheduleViewChange()}};this.onPointerEnd=e=>{if(this.host.marqueeActive()){this.host.finishMarquee(),this.pointers.delete(e.pointerId),this.pointers.size===0&&(this.panLast=null);return}this.pointers.delete(e.pointerId),this.pointers.size<2&&(this.pinch=null),this.pointers.size===1&&(this.panLast=[...this.pointers.values()][0],this.panStart=this.panLast,this.panStarted=!0),this.pointers.size===0&&(this.panLast=null,this.panStart=null,this.panStarted=!1,this.host.afterViewChange())};this.host=e}get moved(){return this.movedPx}attach(){let{container:e}=this.host;e.addEventListener("pointerdown",this.onPointerDown,{passive:!1}),e.addEventListener("pointermove",this.onPointerMove,{passive:!1}),e.addEventListener("pointerup",this.onPointerEnd,{passive:!1}),e.addEventListener("pointercancel",this.onPointerEnd,{passive:!1})}detach(){let{container:e}=this.host;e.removeEventListener("pointerdown",this.onPointerDown),e.removeEventListener("pointermove",this.onPointerMove),e.removeEventListener("pointerup",this.onPointerEnd),e.removeEventListener("pointercancel",this.onPointerEnd)}resetPan(){this.panLast=null,this.panStart=null,this.panStarted=!1}isGhostClick(e){return e.type==="tap"?(this.lastTapAt=performance.now(),!1):this.lastTapAt>0&&performance.now()-this.lastTapAt<Dr}toLocal(e){let i=this.host.container.getBoundingClientRect();return{x:e.clientX-i.left,y:e.clientY-i.top}}};var en=require("konva/lib/shapes/Rect"),eo=require("konva/lib/shapes/Text");function to(t){let e=t.effScale(),i=t.stage.scaleX(),n={width:t.stage.width(),height:t.stage.height()},r=f=>Math.round(f*100)/100,o=t.seats.map(f=>{let h=t.circleById.get(f.id),g=t.boothLabelById.get(f.id)??t.seatLabelById.get(f.id),S=t.viewMode==="perspective"?t.perspectiveSeatScale.get(f.id)??1:1,y=(t.viewMode==="perspective"?i:e)*S,x=f.kind==="booth"?Ve:ye*t.seatLabelScale(f),I=t.viewMode==="perspective"&&f.kind!=="booth"?e*S:y,k=r((g?.fontSize()??x)*I),w=t.worldToScreen(f),M=w.x<0||w.x>n.width||w.y<0||w.y>n.height,C=t.focusedSeatOpacity(f.id,h?.getAbsoluteOpacity()??0),L=t.seatSection.get(f.id),R=!!g?.isVisible()&&C>=.5&&!M,v;R||(C<.5?v="dimmed-or-unavailable":k<Q?v="below-minimum-size":M?v="outside-viewport":g?v="renderer-hidden":v="clutter-or-fit");let T=g?g.width()*i*S:0,E=g?g.height()*(t.viewMode==="perspective"&&f.kind==="booth"?i:e)*S:0,A=h instanceof en.Rect?h.width()*i*S:t.seatR*2*y,F=h instanceof en.Rect?h.height()*(t.viewMode==="perspective"?i:e)*S:t.seatR*2*y,H=2*(t.seatR*y+$t),_=h?.fill(),G=g?.fill(),X=t.accessGlyphById.get(f.id),D=X?.getAbsoluteScale();return{seatId:f.id,label:f.label,kind:f.kind==="booth"?"booth":"seat",markerShape:f.kind==="booth"?"booth":f.wheelchairSpaceType==="no-seat"?"square":"circle",...f.wheelchairSpaceType?{wheelchairSpaceType:f.wheelchairSpaceType}:{},categoryKey:f.categoryKey,...L?{sectionId:L.id}:{},...L?.zone?{zoneId:L.zone}:{},status:t.statusById.get(f.id)??"free",selected:t.selection.has(f.id),visible:R,renderedFontPx:k,fill:typeof _=="string"?_:"",ink:typeof G=="string"?G:h?t.seatLabelInk(f,h):t.seatPreferredLabelInk(f),opacity:r(C),...X?{accessibilityMarker:{glyphVisible:X.isVisible(),glyphWidthPx:r(ce*Math.abs(D?.x??0)),emphasizedByFilter:t.accessGlyphFilterEmphasized(f.id)}}:{},pointerTarget:{active:!t.cached&&!t.seatViewportCulled(f.id)&&!!h?.isVisible()&&!!h?.isListening()&&t.isSelectable(f.id),directWidthPx:r(A),directHeightPx:r(F),effectiveMinimumPx:r(Math.max(Math.min(A,F),H))},screenCenter:{x:r(w.x),y:r(w.y)},...R?{screenBox:{x:r(w.x-T/2),y:r(w.y-E/2),width:r(T),height:r(E)}}:{},...v?{hiddenReason:v}:{}}}),s=o.filter(f=>f.visible).length,a=(f,h,g,S,y,x)=>{let I=ni({x:S.x(),y:S.y()},S.width(),S.height(),S.rotation()),k=x&&x.liftWorld>0?t.isoLiftLocal(x.liftWorld):{x:0,y:0},w=U(I.map(T=>t.worldToScreen({x:T.x+k.x,y:T.y+k.y}))),M=r(S.opacity()),C=S.fill(),L=w.x+w.width<0||w.x>n.width||w.y+w.height<0||w.y>n.height,R=S.isVisible()&&M>.05&&!L,v=x?ri({x:S.x(),y:S.y()},S.width(),S.height(),S.rotation(),x.outline,x.holes):void 0;return{id:f,kind:h,role:g,label:S.text(),visible:R,renderedFontPx:r(S.fontSize()*i),opacity:M,fill:y,ink:typeof C=="string"?C:"",...v==null?{}:{fitsContainer:v},...R?{screenBox:{x:r(w.x),y:r(w.y),width:r(w.width),height:r(w.height)}}:{}}},l=[...t.sections.map(f=>{let h=f.blockPoly.fill();return a(f.id,"section","name",f.nameLabel,typeof h=="string"?h:f.baseFill,f)}),...t.sections.map(f=>{let h=f.blockPoly.fill();return a(`${f.id}:availability`,"section","availability",f.subLabel,typeof h=="string"?h:f.baseFill,f)}),...t.zones.flatMap(f=>[a(f.id,"zone","name",f.label,f.background),...f.sub?[a(`${f.id}:price`,"zone","price",f.sub,f.background)]:[]])],c=[...t.gaById].map(([f,h])=>{let g=h.points.map(L=>t.worldToScreen(L)),S=Math.min(...g.map(L=>L.x)),y=Math.min(...g.map(L=>L.y)),x=Math.max(...g.map(L=>L.x)),I=Math.max(...g.map(L=>L.y)),k=x<0||S>n.width||I<0||y>n.height,w=r(h.polygon.opacity()),M=w>=.1&&!k,C=h.polygon.fill();return{areaId:f,label:h.label,capacity:h.capacity,categoryKey:h.categoryKey,...h.sectionId?{sectionId:h.sectionId}:{},visible:M,interactive:h.polygon.listening(),opacity:w,fill:typeof C=="string"?C:"",effectiveBackground:h.effectiveBackground,...M?{screenBox:{x:r(S),y:r(y),width:r(x-S),height:r(I-y)}}:{}}}),d=[...t.freeTextById].map(([f,h])=>{let{node:g,background:S,kind:y}=h,x=t.worldToScreen({x:g.x(),y:g.y()}),I=g.width()*i,k=g.height()*e,w=x.x-g.offsetX()*i,M=x.y-g.offsetY()*e,C=r(g.fontSize()*e),L=w+I<0||w>n.width||M+k<0||M>n.height,R=g.isVisible()&&!L,v=g.fill(),T=r(g.getAbsoluteOpacity()),E;return R||(C<Q?E="below-minimum-size":L?E="outside-viewport":E="renderer-hidden"),{objectId:h.objectId??f,kind:y,text:g.text(),visible:R,renderedFontPx:C,ink:typeof v=="string"?v:"",background:S,opacity:T,...R?{screenBox:{x:r(w),y:r(M),width:r(I),height:r(k)}}:{},...E?{hiddenReason:E}:{}}}),p=t.labelGroup.find(f=>f.getAttr("rowLabel")===!0).filter(f=>f instanceof eo.Text).map(f=>{let h=f.getClientRect({skipShadow:!0,skipStroke:!0}),g=h.x+h.width<0||h.x>n.width||h.y+h.height<0||h.y>n.height,S=f.fill();return{text:f.text(),visible:f.isVisible()&&!g,renderedFontPx:r(f.fontSize()*e),ink:typeof S=="string"?S:"",...g?{}:{screenBox:{x:r(h.x),y:r(h.y),width:r(h.width),height:r(h.height)}}}}),u=he(t.canvasBackground),m=new Set(["normal","nearly-gone","sold-out","closed"].map(f=>Ze(u,f).toLowerCase())),b=t.sections.filter(f=>f.blockPoly.opacity()>.05);return{viewport:n,projection:t.viewMode,...t.viewMode==="perspective"?{perspective:{model:"pinhole-exact-seat-anchors",sectionSurfaceModel:"tangent-plane",exactSeatAnchorCount:t.perspectiveSeatProjected.size,depthSorted:!0}}:{},canvasBackground:t.canvasBackground,effectiveScale:r(e),rung:t.getRung(),minimumVisibleLabelPx:Q,totalLabelledBookableUnits:o.length,visibleLabels:s,hiddenLabels:o.length-s,totalBookableUnits:o.length+c.reduce((f,h)=>f+h.capacity,0),selectionRingSeatIds:t.overlayLayer.find(".selection-ring").map(f=>String(f.getAttr("seatId")??"")).filter(Boolean),selectionRingColor:t.effSelection,focusedSectionId:t.focusedSectionId,focusBackdropVisible:!!t.focusBackdrop?.isVisible(),categoryFilterKeys:t.categoryFilter?[...t.categoryFilter].sort():null,overviewStyle:{visibleSectionShells:b.length,categoryPaintedSectionShells:b.filter(f=>{let h=f.blockPoly.fill();return typeof h!="string"||!m.has(h.toLowerCase())}).length,visibleCategoryDetailOutlines:t.sections.filter(f=>f.outlinePoly.opacity()>.05).length,visibleSectionRowHints:0,visibleSectionAvailabilityLabels:t.sections.filter(f=>f.subLabel.opacity()>.05).length,visibleSectionGADetails:[...t.gaById.values()].filter(f=>f.sectionId!=null&&f.polygon.opacity()>.05).length},labels:o,gaAreas:c,hierarchyLabels:l,freeTextLabels:d,rowLabels:p}}var po=require("konva/lib/shapes/Circle"),fo=require("konva/lib/shapes/Ellipse"),mo=require("konva/lib/shapes/Line"),bo=require("konva/lib/shapes/Arrow"),go=require("konva/lib/shapes/Path"),ai=require("konva/lib/shapes/Rect"),li=require("konva/lib/shapes/Text"),yo=require("konva/lib/shapes/Image");var io="M13 4.6a1.6 1.6 0 1 0-3.2 0 1.6 1.6 0 0 0 3.2 0 M11 6.5V13h5l2.4 6 M15 16.4A5 5 0 1 1 9 11.3",no=[{key:"restroom-men",label:"Men's restroom",group:"facilities",path:"M16 7a4 4 0 1 0-8 0 4 4 0 0 0 8 0 M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"},{key:"restroom-women",label:"Women's restroom",group:"facilities",path:"M15 5a3 3 0 1 0-6 0 3 3 0 0 0 6 0 M12 8l-4 10h8l-4-10 M10 18v4 M14 18v4"},{key:"restroom-accessible",label:"Accessible restroom",group:"facilities",path:io},{key:"first-aid",label:"First aid",group:"facilities",path:"M5 4h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z M12 8v8 M8 12h8"},{key:"coat-check",label:"Coat check",group:"facilities",path:"M12 6a2 2 0 0 1 0-4 2 2 0 0 1 1.6 3.2L21 13H3l8.4-7.8 M3 13h18"},{key:"atm",label:"ATM / cash",group:"facilities",path:"M2 6h20v12H2V6Z M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0 M6 9h.01 M18 15h.01"},{key:"info",label:"Info point",group:"facilities",path:"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18 M12 11v5 M12 8h.01"},{key:"lost-found",label:"Lost & found",group:"facilities",path:"M11 4a7 7 0 1 0 0 14 7 7 0 0 0 0-14 M16 16l5 5 M9 8.5a2 2 0 1 1 3 1.7c-.8.5-1 .8-1 1.8 M11 15h.01"},{key:"restrooms",label:"Restrooms",group:"facilities",path:"M6 3h12a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M12 8a2 2 0 1 0 0 4 2 2 0 0 0 0-4 M9 18v-3.5a3 3 0 0 1 6 0V18"},{key:"charging",label:"Charging point",group:"facilities",path:"M3 8h13v8H3V8Z M16 10h3v4h-3 M9.6 9l-2 3.5h2.5l-1.5 3"},{key:"smoking",label:"Smoking area",group:"facilities",path:"M2 15h13v3H2v-3Z M18 16h2 M19 8c0 1 1 1.5 1 2.5S19 12 19 13"},{key:"no-smoking",label:"No smoking",group:"facilities",path:"M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18 M5.6 5.6l12.8 12.8 M7 13h6v2H7v-2Z"},{key:"food",label:"Food",group:"food-drink",path:"M7 3v6a2 2 0 0 0 4 0V3 M9 11v10 M17 3c-1.6 1-2.2 3-2.2 6 0 2 .9 3.2 2.2 3.6V21"},{key:"bar",label:"Bar",group:"food-drink",path:"M4 5h16l-8 8-8-8Z M12 13v6 M8 20h8"},{key:"coffee",label:"Caf\xE9 / coffee",group:"food-drink",path:"M4 8h13v4a5 5 0 0 1-5 5H9a5 5 0 0 1-5-5V8Z M17 9h2a2 2 0 0 1 0 4h-2 M8 2v2 M11 2v2 M4 21h14"},{key:"water",label:"Water / drinks",group:"food-drink",path:"M12 22a7 7 0 0 1-7-7c0-5 7-12 7-12s7 7 7 12a7 7 0 0 1-7 7Z"},{key:"merch",label:"Merch / shop",group:"food-drink",path:"M6 8h12l-1 12H7L6 8Z M9 8V6a3 3 0 0 1 6 0v2"},{key:"screen",label:"Screen",group:"facilities",path:"M3 4h18v12H3V4Z M9 20h6 M12 16v4 M10 8l4 2-4 2V8Z"},{key:"sound-booth",label:"Sound booth",group:"facilities",path:"M6 4v16 M6 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4 M12 4v16 M12 8a2 2 0 1 0 0 4 2 2 0 0 0 0-4 M18 4v16 M18 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4"},{key:"entrance",label:"Entrance",group:"navigation",path:"M14 3h5a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-5 M3 12h11 M10 8l4 4-4 4"},{key:"exit",label:"Exit",group:"navigation",path:"M10 3H5a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h5 M14 12h7 M17 8l4 4-4 4"},{key:"emergency-exit",label:"Emergency exit",group:"navigation",path:"M14 4.6a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0 M12.5 8l-3.5 2 1.6 3.6-2 4.4 M12.5 10l3.5 1.5 M9 10.5l-3.5 1 M15 12h6 M18 9l3 3-3 3"},{key:"stairs",label:"Stairs",group:"navigation",path:"M3 20v-4h4v-4h4v-4h4V4h5"},{key:"elevator",label:"Elevator",group:"navigation",path:"M5 3h14a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M8 11l1.5-2 1.5 2 M8 14l1.5 2 1.5-2 M15 8v8"},{key:"parking",label:"Parking",group:"navigation",path:"M5 3h14a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M9 17V7h4a3 3 0 0 1 0 6H9"},{key:"wheelchair",label:"Wheelchair access",group:"accessibility",path:io},{key:"hearing",label:"Hearing assistance",group:"accessibility",path:"M8 20a4 4 0 0 1-2-3c0-1 .5-2 .5-3a4.5 4.5 0 1 1 9 0c0 1.4-1 2-2 2.4-1.2.5-1.5 1-1.5 2.2 M17 6a5 5 0 0 1 1 6 M19.5 4a8 8 0 0 1 1.2 9"}];var Ua=new Map(no.map(t=>[t.key,t]));function Xa(t){return t?Ua.get(t):void 0}function ro(t){return Xa(t)?.path}var id=no.map(t=>t.key);var Ya="round",qa="round",oo="none";function so(t){return{lineCap:t.lineCap??Ya,lineJoin:t.lineJoin??qa,startEnding:t.startEnding??oo,endEnding:t.endEnding??oo}}function ao(t){return{pointerLength:Math.min(48,Math.max(8,t*3)),pointerWidth:Math.min(40,Math.max(8,t*2.25))}}function tn(t,e){return e.length===0?!!t.accessible:!!t.accessibility?.some(i=>e.includes(i))}var si="#0b1220",kt="#ffffff",lo="#0b1220",co="#232c40",uo="#8b93a7";function ho(t,e,i="normal"){let n=t?"bold":i;return e?`italic ${n}`.trim():n}var nn="#0e1117";function So(t,e){let i=new window.Image,n=new yo.Image({image:i,x:e.x+e.width/2,y:e.y+e.height/2,offsetX:e.width/2,offsetY:e.height/2,width:e.width,height:e.height,rotation:e.rotation??0,opacity:j(e.opacity??1,0,1),listening:!1,perfectDrawEnabled:!1});e.layer==="foreground"?t.fgDecorGroup.add(n):t.bgLayer.add(n),t.trackAssetImage(i,e.href,`Decor image \u201C${e.label||e.id}\u201D`,()=>{let r=n.getLayer();r&&r.batchDraw()})}function vo(t,e){if(e.shape==="round")t.bgLayer.add(new po.Circle({x:e.center.x,y:e.center.y,radius:e.radius??40,fill:"#232c40",stroke:"#2a3348",strokeWidth:1.5,listening:!1}));else{let n=e.width??80,r=e.height??50;t.bgLayer.add(new ai.Rect({x:e.center.x,y:e.center.y,width:n,height:r,offsetX:n/2,offsetY:r/2,rotation:e.rotation,fill:"#232c40",stroke:"#2a3348",strokeWidth:1.5,cornerRadius:4,listening:!1}))}let i=xt(t,t.bgLayer,e.displayLabel??e.label,e.center.x,e.center.y,"#cbd5e1",12,!0);t.freeTextById.set(e.id,{node:i,background:"#232c40",kind:"table"})}function ko(t,e){let i=e.background?.color??t.canvasBackground,n=e.color??t.theme.textColor??uo,r=e.semanticKind==="icon"?ro(e.iconKey):void 0;if(r){let c=e.fontSize/24,d=new go.Path({x:e.position.x,y:e.position.y,data:r,rotation:e.rotation,scaleX:c,scaleY:c,stroke:J(i,n),strokeWidth:2,lineCap:"round",lineJoin:"round",fillEnabled:!1,listening:!1,perfectDrawEnabled:!1});t.iconNodeById.set(e.id,{node:d,fontSize:e.fontSize}),t.bgLayer.add(d);return}let o=e.background?.padding??0,s=e.opacity??1,a=new li.Text({x:e.position.x,y:e.position.y,text:e.text,fontSize:e.fontSize,rotation:e.rotation,fontStyle:ho(e.bold,e.italic,"600"),fill:J(i,n),fontFamily:e.fontFamily??t.labelFont(),...e.width!=null?{width:e.width}:{},align:e.align??"left",lineHeight:e.lineHeight??1.2,letterSpacing:e.letterSpacing??0,textDecoration:e.underline?"underline":"",padding:o,opacity:s,wrap:"word",listening:!1,perfectDrawEnabled:!1,name:"buyer-free-text"}),l;e.background&&(l=new ai.Rect({x:e.position.x,y:e.position.y,width:a.width(),height:a.height(),rotation:e.rotation,fill:e.background.color,opacity:s*(e.background.opacity??.9),cornerRadius:e.background.cornerRadius??4,listening:!1,perfectDrawEnabled:!1,name:"buyer-text-background"}),t.bgLayer.add(l)),t.freeTextById.set(e.id,{node:a,backdrop:l,background:i,kind:"free-text"}),t.bgLayer.add(a)}function xo(t,e){let i=e.fill??t.theme.decorFill??co,n=e.role==="stage",r=e.role==="reference-focal",o=!!e.role&&!n,s=he(t.canvasBackground),a=r?s.focalFill:i,l=e.kind==="line"||e.kind==="polyline",c=e.stroke?.color??(n?we(a,.28):r?s.focalStroke:l?"#9aa3b5":void 0),d=e.stroke?.width??(n?1:r||l?2:0),p=e.opacity!=null?j(e.opacity,.1,1):1,u=0,m=0;if(l&&e.points&&e.points.length>=2){u=e.points.reduce((g,S)=>g+S.x,0)/e.points.length,m=e.points.reduce((g,S)=>g+S.y,0)/e.points.length;let b=so(e),f=ao(d),h=new bo.Arrow({points:e.points.flatMap(g=>[g.x,g.y]),closed:!1,x:u,y:m,offsetX:u,offsetY:m,rotation:e.rotation??0,stroke:c,fill:c,strokeWidth:d,opacity:p,lineCap:b.lineCap,lineJoin:b.lineJoin,pointerAtBeginning:b.startEnding==="arrow",pointerAtEnding:b.endEnding==="arrow",...f,listening:!1,name:"buyer-shape-open-path"});h.setAttr("shapeObjectId",e.id),t.bgLayer.add(h)}else if(e.kind==="rect"&&e.x!=null&&e.y!=null&&e.width!=null&&e.height!=null){let b=n?{fillLinearGradientStartPoint:{x:0,y:0},fillLinearGradientEndPoint:{x:0,y:e.height},fillLinearGradientColorStops:[0,ge(a,.3),1,we(a,.12)]}:{fill:a};u=e.x+e.width/2,m=e.y+e.height/2,t.bgLayer.add(new ai.Rect({x:u,y:m,offsetX:e.width/2,offsetY:e.height/2,rotation:e.rotation??0,width:e.width,height:e.height,...b,stroke:c,strokeWidth:d,cornerRadius:j(e.cornerRadius??4,0,Math.min(e.width,e.height)/2),opacity:p,listening:!1}))}else if(e.kind==="ellipse"&&e.x!=null&&e.y!=null&&e.width!=null&&e.height!=null){u=e.x+e.width/2,m=e.y+e.height/2;let b=n?{fillLinearGradientStartPoint:{x:0,y:-e.height/2},fillLinearGradientEndPoint:{x:0,y:e.height/2},fillLinearGradientColorStops:[0,ge(a,.3),1,we(a,.12)]}:{fill:a};t.bgLayer.add(new fo.Ellipse({x:u,y:m,rotation:e.rotation??0,radiusX:e.width/2,radiusY:e.height/2,...b,stroke:c,strokeWidth:d,opacity:p,listening:!1}))}else if(e.kind==="polygon"&&e.points&&e.points.length){let b=e.points.flatMap(g=>[g.x,g.y]),f=U(e.points);u=e.points.reduce((g,S)=>g+S.x,0)/e.points.length,m=e.points.reduce((g,S)=>g+S.y,0)/e.points.length;let h=n?{fillLinearGradientStartPoint:{x:0,y:f.y},fillLinearGradientEndPoint:{x:0,y:f.y+f.height},fillLinearGradientColorStops:[0,ge(a,.3),1,we(a,.12)]}:{fill:a};t.bgLayer.add(new mo.Line({points:b,closed:!0,x:u,y:m,offsetX:u,offsetY:m,rotation:e.rotation??0,...h,stroke:c,strokeWidth:d,opacity:p,listening:!1}))}if(e.label)if(n){let b=Qa(t,u,m,e.label,a);t.primaryFocalLabels.set(b,22),t.freeTextById.set(e.id,{node:b,background:a,kind:"stage"})}else if(o){let b=xt(t,t.bgLayer,e.label,u,m,r?J(a,"#e6e9f0"):"#9aa3b5",r?18:12,!1);r&&t.primaryFocalLabels.set(b,18),t.freeTextById.set(e.id,{node:b,background:a,kind:"decor"})}else{let b=xt(t,t.bgLayer,e.label,u,m,"#cbd5e1",16,!0);t.freeTextById.set(e.id,{node:b,background:a,kind:"decor"})}}function Qa(t,e,i,n,r){let o=J(r,"#e6e9f0"),s=new li.Text({x:e,y:i,text:n.toUpperCase(),fontSize:22,fontStyle:"700",letterSpacing:4,fontFamily:t.labelFont(),fill:o,listening:!1,perfectDrawEnabled:!1});return s.offsetX(s.width()/2),s.offsetY(s.height()/2),t.bgLayer.add(s),s}function wo(t,e){let i=t.catColor.get(e.categoryKey)??"#6e7bff",n=t.canvasBackground,r=fr(i,n,je),o=t.theme.textColor??"#e6e9f0",s=J(r,o),a=Je(e.points,e.holes,{fill:i,opacity:je,stroke:i,strokeWidth:1.5,cornerRadius:e.cornerRadius});a.setAttr("gaId",e.id),a.on("click tap",u=>{t.isGhostClick(u)||t.opts.onGAClick?.(e.id)}),a.on("mouseenter",()=>{t.container.style.cursor="pointer"}),a.on("mouseleave",()=>{t.container.style.cursor="default"}),t.bgLayer.add(a);let l=at(e.points,e.holes),c=t.sections.find(u=>Y(l,u.outline,u.holes)),d=xt(t,t.bgLayer,e.displayLabel??e.label,l.x,l.y-8,s,ur,!1),p=xt(t,t.bgLayer,`cap ${e.capacity}`,l.x,l.y+10,s,hr,!1);t.freeTextById.set(`${e.id}:label`,{objectId:e.id,node:d,background:r,kind:"ga-label",categoryKey:e.categoryKey}),t.freeTextById.set(`${e.id}:capacity`,{objectId:e.id,node:p,background:r,kind:"ga-capacity",categoryKey:e.categoryKey}),t.gaById.set(e.id,{label:e.displayLabel??e.label,capacity:e.capacity,categoryKey:e.categoryKey,points:e.points,polygon:a,effectiveBackground:r,...c?{sectionId:c.logicalId}:{}})}function xt(t,e,i,n,r,o,s,a){let l=new li.Text({x:n,y:r,text:i,fontSize:s,fontStyle:a?"700":"500",fontFamily:t.labelFont(),fill:o,listening:!1,perfectDrawEnabled:!1});return l.offsetX(l.width()/2),l.offsetY(l.height()/2),e.add(l),l}function Io(t,e){let i=[],n=e.theme.background??"#0e1117",r=new Map,o=(c,d)=>{let p=r.get(c)??[];p.push(d),r.set(c,p)};for(let c of e.seats){if(c.kind==="booth")continue;let d=c.logicalRowId??c.rowId;o(d,c),d!==c.rowId&&o(c.rowId,c)}let s=c=>c.logicalSeatIndex??Number(c.id.split(":").pop()??0);for(let c of t.objects){if(c.type!=="row")continue;let d=c.segmentedRow?.repeatLabelOnComponents===!0;if(c.segmentedRow&&!d&&c.segmentedRow.componentIndex!==0)continue;let p=d?c.labelPresentation:c.segmentedRow?.labelPresentation??c.labelPresentation;if(p?.visible===!1||p?.positionPreset==="none")continue;let u=c.segmentedRow&&!d?c.segmentedRow.groupId:c.id,m=(r.get(u)??[]).slice().sort((R,v)=>s(R)-s(v));if(!m.length)continue;let b=m[0],f=m[m.length-1],h=p?.labelStyle,g=J(n,h?.color??e.theme.rowLabelColor??e.theme.textColor??"#e6e9f0",Vt),S=h?.size??12,y=p?.rotation??0,x=c.segmentedRow?.displayLabel??c.displayLabel??c.label,I=e.objectFilteredOut(c)?.15:1,k=e.seatSection.get(b.id),w=k?[...new Set([k.id,k.logicalId,k.zone].filter(R=>!!R))]:void 0,M=(R,v,T)=>i.push({text:x,x:R,y:v,rotation:y,fontSize:S,ink:g,opacity:I,...w?.length?{focusKeys:w}:{},...T?{automaticAway:T}:{}});if(p?.position){M(p.position.x,p.position.y);continue}let C=e.seatR+12,L=p?.positionPreset??"start";if(L==="start"||L==="both"){let R=c.rotation*Math.PI/180,v={x:-Math.cos(R),y:-Math.sin(R)};M(b.x+v.x*C,b.y+v.y*C,v)}if(L==="end"||L==="both"){let R=(c.rotation+c.curve)*Math.PI/180,v={x:Math.cos(R),y:Math.sin(R)};M(f.x+v.x*C,f.y+v.y*C,v)}}let a=(e.seatR+12)*2.2,l=[];for(let c of i){let d=l.find(p=>p.text===c.text&&Math.hypot(p.x-c.x,p.y-c.y)<=a);if(d){d.x=(d.x+c.x)/2,d.y=(d.y+c.y)/2;continue}l.push(c)}return l}function rn(t,e,i=ee){let n=t.rotation()*Math.PI/180,r=Math.abs(Math.cos(n)),o=Math.abs(Math.sin(n)),s=(t.width()*r+t.height()*o)/2+i,a=(t.width()*o+t.height()*r)/2+i;return{x:e.x-s,y:e.y-a,width:s*2,height:a*2}}function To(t,e,i,n){let r={x:e.x,y:e.y},o=e.automaticAway;if(!o)return r;let s={x:-o.y,y:o.x},a=Math.max(7,Math.min(16,e.fontSize*.75)),l=[{x:0,y:0}];for(let u=1;u<=4;u++){let m=a*u;l.push({x:s.x*m,y:s.y*m},{x:-s.x*m,y:-s.y*m},{x:o.x*m,y:o.y*m},{x:(o.x+s.x)*m,y:(o.y+s.y)*m},{x:(o.x-s.x)*m,y:(o.y-s.y)*m})}let c=r,d=1/0,p=1/0;for(let u of l){let m={x:r.x+u.x,y:r.y+u.y},b=rn(t,m),h=(n?Kt(n,b,{mode:"overlap"}).length:0)+i.collisionCount(b),g=Math.hypot(u.x,u.y);if((h<d||h===d&&g<p)&&(c=m,d=h,p=g),h===0)break}return c}function Lo(t,e){let i=t.sectionHeat.get(e.id)??t.sectionHeat.get(e.logicalId)??(e.zone?t.sectionHeat.get(e.zone):void 0);if(i==null||i<=0){e.outlinePoly.stroke(le(e.outlineTint,.5)),e.outlinePoly.fill(le(e.outlineTint,.08)),e.outlinePoly.strokeWidth(1.75),e.outlinePoly.shadowOpacity(0);return}let n=zt("#f4b740","#ef4444",i);e.outlinePoly.stroke(le(n,.72+i*.25)),e.outlinePoly.fill(le(n,.08+i*.13)),e.outlinePoly.strokeWidth(2+i*3.5),e.outlinePoly.shadowColor(n),e.outlinePoly.shadowBlur(4+i*12),e.outlinePoly.shadowOpacity(.25+i*.45)}function on(t,e){return t.closedSections.has(e.id)||t.closedSections.has(e.logicalId)||e.zone!=null&&t.closedSections.has(e.zone)}function sn(t,e){return on(t,e)?"closed":e.total<=0?"normal":e.free<=0?"sold-out":e.free<=e.total*Wr?"nearly-gone":"normal"}function Co(t,e){let i=sn(t,e);e.blockPoly.fill(Ze(he(t.canvasBackground),i)),e.subLabel.text(i==="sold-out"?oe("map.soldOut"):oe("map.seatsLeft",{count:e.free})),e.subLabel.offsetX(e.subLabel.width()/2)}function Mo(t,e){let i,n;t.reducedMotion?(i=e<=Te?1:0,n=e<=$e?1:0):(i=j((qe-e)/(qe-Te),0,1),n=j((Te-e)/(Te-$e),0,1)),(t.floorOverview||t.focusedSectionId)&&(i=0,n=0);let r=!t.floorOverview&&!t.focusedSectionId&&e<se;r&&(i=1),t.zones.length||(n=0);let o=t.viewMode==="perspective"&&t.glideInProgress&&t.seatCount>2500;t.seatLayer.opacity(r||o?0:1-i);let s=t.stageScaleX,a=!t.glideInProgress&&(t.lodScale===0||Math.abs(e-t.lodScale)/(t.lodScale||1)>.08);a&&t.setLodScale(e);let l=t.focusedSectionId,c=he(t.canvasBackground),d=j((i-.2)/.8,0,1);for(let u of t.sections){let m=t.hasFocusDimOverlay?1:l&&u.id!==l&&u.logicalId!==l&&u.zone!==l?St:1;u.outlinePoly.opacity(r?0:(1-i)*m),u.blockPoly.opacity(Gr*i*m),u.blockPoly.stroke(c.sectionStroke),u.blockPoly.strokeWidth(Jt/Math.max(s,1e-4));let b=u.blockPoly.fill(),f=J(typeof b=="string"?b:u.baseFill,u.preferredInk);u.nameLabel.fill(f),u.subLabel.fill(f),a&&d>.01&&tl(t,u,s),u.nameLabel.opacity(u.nameLabelFits?d*(1-n)*m:0),u.subLabel.opacity(0)}let p=n*(1-t.isoT);for(let u of t.zones)u.back.opacity(p),u.label.opacity(p),u.sub&&u.sub.opacity(p),a&&il(t,u,s);if(!t.glideInProgress&&(d>.01||p>.01)){el(t,s),Ja(t.sections);for(let u of t.zones){let m=u.label.opacity();u.back.opacity(m),u.sub&&u.sub.opacity(m)}}t.bgLayer.batchDraw()}function Ja(t){let e=new Map;for(let i of t)(e.get(i.logicalId)??e.set(i.logicalId,[]).get(i.logicalId)).push(i);for(let i of e.values()){if(i.length<2)continue;let n=i.filter(r=>r.nameLabel.opacity()>.05).sort((r,o)=>{let s=U(r.outline),a=U(o.outline);return a.width*a.height-s.width*s.height});for(let r of n.slice(1))r.nameLabel.opacity(0)}}function el(t,e){let n=[],r=a=>{let l=t.worldToScreen({x:a.x(),y:a.y()}),c=U(ni({x:0,y:0},a.width()*e,a.height()*e,a.rotation()));return{x:l.x-c.width/2,y:l.y-c.height/2,w:c.width,h:c.height}};for(let a of t.zones){if(a.label.opacity()<=.05)continue;let l=t.worldToScreen(a.anchor),c=a.back.width()*e,d=a.back.height()*e;n.push({node:a.label,tier:0,section:!1,box:{x:l.x-c/2,y:l.y-d/2,w:c,h:d}})}for(let a of t.sections)a.nameLabel.opacity()>.05&&n.push({node:a.nameLabel,tier:1,section:!0,area:a.labelArea,box:r(a.nameLabel)});if(n.length<2)return;n.sort((a,l)=>a.tier-l.tier||(l.area??0)-(a.area??0)||a.box.y-l.box.y||a.box.x-l.box.x);let o=[],s=a=>o.some(l=>a.x<l.x+l.w+4&&l.x<a.x+a.w+4&&a.y<l.y+l.h+4&&l.y<a.y+a.h+4);for(let a of n){if(!s(a.box)){o.push(a.box);continue}let l=!1;if(a.section){let c=a.node.fontSize(),d=a.node.y();for(let p of Vr){let u=c*p;if(u*e<Qi)break;wt(a.node,u,d);let m=r(a.node);if(!s(m)){o.push(m),l=!0;break}}l||wt(a.node,c,d)}l||a.node.opacity(0)}}function wt(t,e,i){t.fontSize(Math.max(1,e)),t.offsetX(t.width()/2),t.offsetY(t.height()/2),t.y(i)}function tl(t,e,i){e.subLabelFits=!1;let n=Math.min(1,Math.max(.66,t.stageWidth/900)),r=Hr*e.labelScale*n,o=Math.min(Qi*e.labelScale,r);for(let s=r;s>=o;s-=1)for(let a of[0,-90]){e.nameLabel.rotation(a),wt(e.nameLabel,s/i,e.nameLabel.y());for(let l of e.labelAnchors){e.nameLabel.position(l);let c=8/i;if(ri(l,e.nameLabel.width()+c,e.nameLabel.height()+c,a,e.outline,e.holes)){e.nameLabelFits=!0;return}}}e.nameLabel.position(e.centroid),e.nameLabel.rotation(0),e.nameLabelFits=!1}function il(t,e,i){let n=Math.min(1,Math.max(.66,t.stageWidth/900)),r=10*n/i,o=6*n/i,s=e.sub?3*n/i:0;wt(e.label,ei*n/i,e.anchor.y),e.sub&&wt(e.sub,jr*n/i,e.anchor.y);let a=Math.max(e.label.width(),e.sub?.width()??0)+r*2,l=e.label.height()+(e.sub?s+e.sub.height():0)+o*2;e.label.y(e.anchor.y-(e.sub?(s+e.sub.height())/2:0)),e.sub&&e.sub.y(e.anchor.y+(e.label.height()+s)/2),e.back.position(e.anchor),e.back.size({width:a,height:l}),e.back.offset({x:a/2,y:l/2}),e.back.cornerRadius(7*n/i),e.back.strokeWidth(1/i);let c=e.back.getAbsolutePosition(),d=62+l*i/2;if(c.y<d){let p=(d-c.y)/i;e.label.y(e.label.y()+p),e.sub&&e.sub.y(e.sub.y()+p),e.back.y(e.back.y()+p)}}var Po=require("konva/lib/Group"),an=require("konva/lib/shapes/Line"),Ro=require("konva/lib/shapes/Rect"),ln=require("konva/lib/shapes/Text");function Eo(t){let e=t.exportMode?Math.max(t.effScale(),ue):t.effScale(),i=e>=ue;for(let[o,s]of t.boothLabelById){let a=t.circleById.get(o);s.visible(Ie(s.fontSize(),e)&&!!a?.isVisible()&&t.focusedSeatOpacity(o,a?.getAbsoluteOpacity()??1)>=.5)}t.labelGroup.destroyChildren(),t.labelLiftGroups.clear(),t.seatLabelById.clear();let n=0;if(i)for(let o of t.visibleSeatCandidates()){if(o.kind==="booth")continue;let s=t.worldToScreen(o);if(s.x<-20||s.x>t.stage.width()+20||s.y<-20||s.y>t.stage.height()+20||t.accessGlyphById.has(o.id)&&t.accessGlyphShouldShow(o.id))continue;let a=t.circleById.get(o.id);if(!a?.isVisible()||t.focusedSeatOpacity(o.id,a.getAbsoluteOpacity())<.5)continue;let l=t.statusById.get(o.id)??"free",c=t.renderedSeatPoint(o),d=t.viewMode==="perspective"?t.perspectiveSeatScale.get(o.id)??1:1;if(l==="booked"||l==="held"&&!t.ownedHold.has(o.id)&&!t.opts.manageMode){let f=new Po.Group({x:c.x,y:c.y,listening:!1});if(f.scale({x:d,y:d}),l==="held"?(f.add(new Ro.Rect({x:-4.2,y:-.7,width:8.4,height:6.5,cornerRadius:1.3,stroke:"#ffffff",strokeWidth:1.25,listening:!1})),f.add(new an.Line({points:[-2.4,-.8,-2.4,-2.7,-1.2,-4,0,-4.35,1.2,-4,2.4,-2.7,2.4,-.8],stroke:"#ffffff",strokeWidth:1.2,lineCap:"round",lineJoin:"round",listening:!1}))):f.add(new an.Line({points:[-4.2,4.2,4.2,-4.2],stroke:"#ffffff",strokeWidth:1.8,lineCap:"round",listening:!1})),t.seatLabelContainer(o.id).add(f),++n>=Zi)break;continue}let u=ye*t.seatLabelScale(o),m=new ln.Text({x:c.x,y:c.y,text:Ht(o.displayLabel??o.label),fontSize:u,fontStyle:"600",fontFamily:t.labelFont(),fill:a?t.seatLabelInk(o,a):t.seatPreferredLabelInk(o),listening:!1,perfectDrawEnabled:!1}),b=t.seatR*2-3;if(m.width()>b&&m.fontSize(Math.max(bt,u*b/m.width())),m.width()>b+.01){m.destroy();continue}if(!Ie(m.fontSize(),e)){m.destroy();continue}if(m.offsetX(m.width()/2),m.offsetY(m.height()/2),m.scale({x:d,y:d}),t.seatLabelContainer(o.id).add(m),t.seatLabelById.set(o.id,m),++n>=Zi)break}let r=new Qe;for(let{node:o}of t.freeTextById.values()){if(!o.isVisible())continue;let s=o.getClientRect({relativeTo:t.bgLayer,skipShadow:!0,skipStroke:!0});r.insert({x:s.x-ee,y:s.y-ee,width:s.width+ee*2,height:s.height+ee*2})}for(let o of t.rowLabelPlan){let s=t.focusedSectionId!=null&&o.focusKeys?.includes(t.focusedSectionId),a=s?Math.max(o.fontSize,_r/Math.max(e,1e-4)):o.fontSize;if(!s&&!Ie(a,e))continue;let l=t.worldToScreen({x:o.x,y:o.y});if(l.x<-40||l.x>t.stage.width()+40||l.y<-40||l.y>t.stage.height()+40)continue;let c=new ln.Text({x:o.x,y:o.y,text:o.text,fontSize:a,fontStyle:"700",fontFamily:t.labelFont(),fill:o.ink,rotation:o.rotation,opacity:o.opacity,shadowColor:"#05070c",shadowBlur:o.ink.toLowerCase()==="#ffffff"?5:0,shadowOpacity:o.ink.toLowerCase()==="#ffffff"?.8:0,shadowForStrokeEnabled:!1,listening:!1,perfectDrawEnabled:!1});c.offsetX(c.width()/2),c.offsetY(c.height()/2);let d=t.resolveAutomaticRowLabelPosition(c,o,r);c.position(d),c.setAttr("rowLabel",!0),r.insert(t.rowLabelBox(c,d)),t.labelGroup.add(c)}t.isoT>0&&t.viewMode!=="perspective"&&t.applyUprightLabels(),t.overlayLayer.batchDraw()}function It(t){return{th:Zt*Math.PI/180*t.isoT,sg:1-(1-yt)*t.isoT}}function Ao(t,e){let{th:i,sg:n}=It(e),r=e.centre,o=t.x-r.x,s=t.y-r.y,a=o*Math.cos(i)-s*Math.sin(i),l=(o*Math.sin(i)+s*Math.cos(i))*n;return{x:r.x+a,y:r.y+l}}function Bo(t,e){let{th:i,sg:n}=It(e),r=e.centre,o=t.x-r.x,a=(t.y-r.y)/n,l=o*Math.cos(i)+a*Math.sin(i),c=-o*Math.sin(i)+a*Math.cos(i);return{x:r.x+l,y:r.y+c}}function Oo(t,e){let{th:i,sg:n}=It(e),r=t*e.isoT;return{x:-(r/n)*Math.sin(i),y:-(r/n)*Math.cos(i)}}function Fo(t,e,i){let n=xr(e);t.offset(i),t.position(re(e,i)),t.rotation(n.rotationDeg),t.scale({x:n.scaleX,y:n.scaleY}),t.skewX(n.skewX),t.skewY(0)}function Do(t){t.position({x:0,y:0}),t.offset({x:0,y:0}),t.scale({x:1,y:1}),t.rotation(0),t.skewX(0),t.skewY(0)}function _o(t,e){let i=Math.hypot(e.x-t.surfaceFocal.x,e.y-t.surfaceFocal.y),n=Math.max(0,i-t.frontDistanceWorld);return t.liftWorld+n*Math.tan(t.rakeDeg*Math.PI/180)}function zo(t,e,i){return t.perspectiveAffine?re(t.perspectiveAffine,e):re(i,e)}function No(t,e){return e?re(e,t):t}function Go(t,e){let i=0;for(let p of t.seats){let u=Math.max(0,(p.eyeHeightM??W)-W);i=Math.max(i,u*De)}for(let p of t.objects)p.type==="section"&&(i=Math.max(i,xe(p,{floorBaseHeightM:t.floorBaseHeightMFor(p.id)}).height*De));let n=Sr(t.bounds,i),r=Ut(n,n.target),o=vr(r);e.seatLocal.clear(),e.seatProjected.clear(),e.seatDepth.clear(),e.seatScale.clear();let s=1/0,a=1/0,l=-1/0,c=-1/0;for(let p of t.seats){let u=Math.max(0,(p.eyeHeightM??W)-W),m=ie(n,p,u*De),b={x:m.x,y:m.y};e.seatProjected.set(p.id,b),e.seatLocal.set(p.id,re(o,b)),e.seatDepth.set(p.id,m.depth),e.seatScale.set(p.id,m.scale),s=Math.min(s,m.x),a=Math.min(a,m.y),l=Math.max(l,m.x),c=Math.max(c,m.y)}for(let p of[{x:t.bounds.x,y:t.bounds.y},{x:t.bounds.x+t.bounds.width,y:t.bounds.y},{x:t.bounds.x+t.bounds.width,y:t.bounds.y+t.bounds.height},{x:t.bounds.x,y:t.bounds.y+t.bounds.height}]){let u=ie(n,p,0);s=Math.min(s,u.x),a=Math.min(a,u.y),l=Math.max(l,u.x),c=Math.max(c,u.y)}let d=Math.max(24,t.seatR*3);return{camera:n,baseAffine:r,baseInverse:o,bounds:Number.isFinite(s)?{x:s-d,y:a-d,width:Math.max(1,l-s+d*2),height:Math.max(1,c-a+d*2)}:null}}function Ho(t,e,i){let n=i?[...i].map(r=>t.seatById.get(r)).filter(r=>!!r):e?t.seats:[...t.perspectiveAppliedSeats].map(r=>t.seatById.get(r)).filter(r=>!!r);for(let r of n){if(e&&t.perspectiveAppliedSeats.has(r.id))continue;let o=e?t.perspectiveSeatProjected.get(r.id)??r:r,s=e?t.perspectiveSeatScale.get(r.id)??1:1,a=t.circleById.get(r.id);a?.position(o),a?.scale({x:s,y:s});let l=t.accessRingById.get(r.id);l?.position(o),l?.scale({x:s,y:s});let c=t.accessGlyphById.get(r.id);if(c){let p=t.seatR*1.5/ce;c.position(o),c.scale({x:p*s,y:p*s})}let d=t.boothLabelById.get(r.id);d?.position(o),d?.scale({x:s,y:s}),e&&t.perspectiveAppliedSeats.add(r.id)}e||t.perspectiveAppliedSeats.clear()}function cn(t){return t?.getAttr?.("seatId")??void 0}var Lt=class Lt{constructor(e,i={}){this.labelLiftGroups=new Map;this.seats=[];this.seatById=new Map;this.seatIndex=null;this.chartDoc=null;this.activeFloorId="";this.stacked=!1;this.floorOverview=!1;this.circleById=new Map;this.boothDims=new Map;this.boothLabelById=new Map;this.seatLabelById=new Map;this.accessRingById=new Map;this.accessGlyphById=new Map;this.freeTextById=new Map;this.iconNodeById=new Map;this.primaryFocalLabels=new Map;this.gaById=new Map;this.statusById=new Map;this.catColor=new Map;this.theme={};this.canvasBackground=nn;this.effSelection=kt;this.colorblind=!1;this.cbHueByKey=new Map;this.rowLabelPlan=[];this.catOrder=[];this.selection=new Set;this.selectionMarkers=new Map;this.ownedHold=new Set;this.selectionFocusId=null;this.hoveredId=null;this.focusedId=null;this.accessFilter=null;this.categoryHighlight=null;this.categoryFilter=null;this.commercialLimitedFilter=!1;this.sections=[];this.zones=[];this.seatSection=new Map;this.unsectionedSeatGroup=null;this.catPrice=new Map;this.dimmedSections=new Set;this.sectionHeat=new Map;this.closedSections=new Set;this.focusedSectionId=null;this.focusBackdrop=null;this.focusDimOverlay=null;this.objectFloor=new Map;this.zoneColor=new Map;this.hasSections=!1;this.hasBoothText=!1;this.isoT=0;this.isoTarget=0;this.isoRaf=0;this.viewMode="flat";this.perspectiveCamera=null;this.perspectiveBaseAffine=null;this.perspectiveBaseInverse=null;this.perspectiveSeatLocal=new Map;this.perspectiveSeatProjected=new Map;this.perspectiveSeatDepth=new Map;this.perspectiveSeatScale=new Map;this.perspectiveAppliedSeats=new Set;this.perspectiveBounds=null;this.isoCentre={x:0,y:0};this.glideRaf=0;this.glideInProgress=!1;this.destroyed=!1;this.lodScale=0;this.reducedMotion=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;this.fitScale=1;this.seatR=mt;this.bounds={x:0,y:0,width:1,height:1};this.cached=!1;this.dpr=Math.min(typeof window<"u"&&window.devicePixelRatio||1,2);this.assetGeneration=0;this.assetPromises=[];this.assetErrors=[];this.assetCancels=new Set;this.rafId=0;this.frames=0;this.lastFpsAt=0;this.recacheTimer=null;this.resizeObs=null;this.viewChangeRaf=0;this.marquee=null;this.marqueeCur=null;this.onKeyDown=e=>{if(this.opts.manageMode){if((e.metaKey||e.ctrlKey)&&(e.key==="a"||e.key==="A")){e.preventDefault(),this.opts.onMarquee?.(this.selectAllSelectable());return}if(e.key==="Escape"&&this.selection.size){e.preventDefault(),this.clearSelection(),this.opts.onMarquee?.([]);return}}let i=e.key==="ArrowLeft"?{x:-1,y:0}:e.key==="ArrowRight"?{x:1,y:0}:e.key==="ArrowUp"?{x:0,y:-1}:e.key==="ArrowDown"?{x:0,y:1}:null;if(i){e.preventDefault();let n=this.focusedId?this.nearestSeat(this.focusedId,i):this.seats[0]?.id??null;n&&this.focusSeat(n);return}if((e.key==="Enter"||e.key===" ")&&this.focusedId){e.preventDefault(),this.toggleSeat(this.focusedId);let n=this.seatById.get(this.focusedId);n&&this.opts.onFocusSeat?.(n)}};this.container=e,this.opts={maxSelection:10,selectableStatuses:["free"],...i},this.exportMode=i.exportMode===!0,this.currency=i.currency;let n=Tt.Konva.pixelRatio;this.exportMode&&(this.dpr=1),Tt.Konva.pixelRatio=this.dpr,this.stage=new Vo.Stage({container:e,width:e.clientWidth||1,height:e.clientHeight||1,draggable:!1}),this.gestures=new oi(this.pointerHost),this.exportMode||(e.style.touchAction="none",this.gestures.attach(),e.tabIndex<0&&(e.tabIndex=0),e.setAttribute("role","application"),e.getAttribute("aria-label")||e.setAttribute("aria-label",oe("map.aria")),e.addEventListener("keydown",this.onKeyDown)),this.bgLayer=new ci.Layer({listening:!this.exportMode}),this.seatLayer=new ci.Layer({listening:!this.exportMode}),this.overlayLayer=new ci.Layer({listening:!1}),this.labelGroup=new Le.Group({listening:!1}),this.overlayLayer.add(this.labelGroup),this.fgDecorGroup=new Le.Group({listening:!1}),this.overlayLayer.add(this.fgDecorGroup),this.hoverRing=new ve.Circle({radius:mt+2,stroke:"#ffffff",strokeWidth:2,opacity:.85,listening:!1,visible:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1}),this.overlayLayer.add(this.hoverRing),this.focusRing=new ve.Circle({radius:mt+3,stroke:"#38bdf8",strokeWidth:2.5,dash:[4,3],opacity:.95,listening:!1,visible:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1}),this.overlayLayer.add(this.focusRing),this.stage.add(this.bgLayer,this.seatLayer,this.overlayLayer),this.exportMode&&(Tt.Konva.pixelRatio=n),this.exportMode||(this.wireInteraction(),this.startFpsLoop()),!this.exportMode&&typeof ResizeObserver<"u"&&(this.resizeObs=new ResizeObserver(()=>this.handleResize()),this.resizeObs.observe(e))}get moved(){return this.gestures.moved}isGhostClick(e){return this.gestures.isGhostClick(e)}get pointerHost(){return{container:this.container,stage:this.stage,cancelGlide:()=>this.cancelGlide(),releaseSectionFocusDim:()=>this.releaseSectionFocusDim(),updateSeatGroupVisibility:()=>this.updateSeatGroupVisibility(),scheduleViewChange:()=>this.scheduleViewChange(),afterViewChange:()=>this.afterViewChange(),zoomBounds:()=>this.zoomBounds(),marqueeActive:()=>!!this.marquee,marqueeShouldStart:e=>!!(this.opts.manageMode&&this.opts.marqueeSelect&&e.pointerType!=="touch"&&e.button===0&&this.getRung()==="seats"),beginMarquee:e=>this.beginMarquee(e),updateMarquee:e=>this.updateMarquee(e),finishMarquee:()=>this.finishMarquee(),cancelMarquee:()=>this.cancelMarquee()}}setChart(e,i){if(e!==this.chartDoc&&(this.stacked=!1,this.floorOverview=!1),this.cancelAssetLoads(),this.chartDoc=e,this.activeFloorId=i?.floorId??Ne(e)[0].id,this.objectFloor.clear(),e.floors&&e.floors.length>1)for(let r of e.floors)for(let o of r.objects)this.objectFloor.set(o.id,r.id),o.type==="section"&&o.logicalSectionId&&this.objectFloor.set(o.logicalSectionId,r.id);let n=this.floorView(e);this.focusedId=null,this.focusRing.visible(!1),this.bgLayer.destroyChildren(),this.focusDimOverlay?.destroy(),this.focusDimOverlay=null,this.seatLayer.clearCache(),this.seatLayer.listening(!this.exportMode),this.seatLayer.destroyChildren(),this.unsectionedSeatGroup=null,this.labelGroup.destroyChildren(),this.labelLiftGroups.clear(),this.fgDecorGroup.destroyChildren(),this.circleById.clear(),this.boothDims.clear(),this.boothLabelById.clear(),this.seatLabelById.clear(),this.accessRingById.clear(),this.accessGlyphById.clear(),this.freeTextById.clear(),this.iconNodeById.clear(),this.primaryFocalLabels.clear(),this.gaById.clear();for(let r of this.selectionMarkers.values())r.destroy();this.selectionMarkers.clear(),this.ownedHold.clear(),this.selectionFocusId=null,this.statusById.clear(),this.selection.clear(),this.seatById.clear(),this.seatIndex=null,this.cached=!1,this.accessFilter=null,this.sections=[],this.zones=[],this.seatSection.clear(),this.focusedSectionId=null,this.focusBackdrop=null,this.catPrice.clear(),this.zoneColor.clear(),this.lodScale=0,this.hasBoothText=!1,this.isoRaf&&(cancelAnimationFrame(this.isoRaf),this.isoRaf=0),this.isoT=0,this.isoTarget=0,this.viewMode="flat",this.perspectiveCamera=null,this.perspectiveBaseAffine=null,this.perspectiveBaseInverse=null,this.perspectiveSeatLocal.clear(),this.perspectiveSeatProjected.clear(),this.perspectiveSeatDepth.clear(),this.perspectiveSeatScale.clear(),this.perspectiveAppliedSeats.clear(),this.perspectiveBounds=null,this.resetLayerTransforms(),this.hasSections=n.objects.some(r=>r.type==="section");for(let r of e.zones??[])r.color&&this.zoneColor.set(r.id,r.color);this.seatLayer.opacity(1),this.hoverRing.visible(!1),this.hoveredId=null,this.theme=e.theme??{},this.seatR=j(this.theme.seatScale??1,.7,1.6)*mt,this.container.style.background="",this.canvasBackground=this.resolveCanvasBackground(),this.container.style.background=this.canvasBackground,this.effSelection=this.resolveSelectionColor(),this.hoverRing.stroke(this.effSelection),this.hoverRing.radius(this.seatR+2),this.catColor.clear(),this.catPrice.clear(),this.catOrder=e.categories.map(r=>r.key),this.cbHueByKey.clear(),[...this.catOrder].sort().forEach((r,o)=>{this.cbHueByKey.set(r,ii[o%ii.length])});for(let r of e.categories)this.catColor.set(r.key,r.color),typeof r.price=="number"&&this.catPrice.set(r.key,r.price);for(let r of n.objects)r.type==="booth"&&this.boothDims.set(r.id,{width:r.width,height:r.height,rotation:r.rotation,...r.points&&r.points.length>=3?{points:r.points.map(o=>({x:o.x,y:o.y}))}:{}});this.seats=be(n,{floorBaseHeightM:this.stacked||this.floorOverview?0:this.floorBaseHeightMFor()});for(let r of this.seats)this.seatById.set(r.id,r),this.statusById.set(r.id,"free");this.seatIndex=yr(this.seats,{seatRadius:this.seatR}),this.bounds=Dt(n),this.isoCentre={x:this.bounds.x+this.bounds.width/2,y:this.bounds.y+this.bounds.height/2},this.buildPerspectiveProjection(n),this.renderBackground(n),this.unsectionedSeatGroup=new Le.Group({listening:!this.exportMode}),this.seatLayer.add(this.unsectionedSeatGroup),this.renderSeats(),this.buildRowLabelPlan(n),this.overlayLayer.add(this.labelGroup),this.overlayLayer.add(this.fgDecorGroup),this.overlayLayer.add(this.hoverRing),this.overlayLayer.add(this.focusRing),this.zoomToFit()}floorView(e){if(!e.floors||!e.floors.length)return{...e,referenceImage:void 0,backgroundImage:Xe(e)};if(this.floorOverview&&e.floors.length>=2)return{...zi(e),referenceImage:void 0,backgroundImage:Xe(e)};if(this.stacked&&e.floors.length>=2)return{..._i(e),referenceImage:void 0,backgroundImage:Xe(e)};let i=e.floors.find(n=>n.id===this.activeFloorId)??e.floors[0];return{...e,objects:i.objects,focalPoint:i.focalPoint,referenceImage:void 0,backgroundImage:Xe(i),floors:void 0}}floorBaseHeightMFor(e){let i=this.chartDoc?.floors;if(!i?.length)return 0;let n=this.stacked&&e?this.objectFloor.get(e)??this.activeFloorId:this.activeFloorId;return i.find(r=>r.id===n)?.baseHeightM??0}setStacked(e){!this.chartDoc||e===this.stacked||!(this.chartDoc.floors&&this.chartDoc.floors.length>=2)||(this.stacked=e,e&&(this.floorOverview=!1),this.setChart(this.chartDoc,{floorId:this.activeFloorId}))}isStacked(){return this.stacked}setFloorOverview(e){!this.chartDoc||e===this.floorOverview||!(this.chartDoc.floors&&this.chartDoc.floors.length>=2)||(this.floorOverview=e,e&&(this.stacked=!1),this.setChart(this.chartDoc,{floorId:this.activeFloorId}))}isFloorOverview(){return this.floorOverview}setActiveFloor(e){!this.chartDoc||e===this.activeFloorId&&!this.floorOverview&&!this.stacked||(this.floorOverview=!1,this.stacked=!1,this.setChart(this.chartDoc,{floorId:e}))}getFloors(){return this.chartDoc?Ne(this.chartDoc).map(e=>({id:e.id,name:e.name})):[]}getActiveFloorId(){return this.activeFloorId}setStatus(e,i){let n=!1,r=this.hasSections?new Set:null;for(let o of e){if(!this.statusById.has(o))continue;let s=this.statusById.get(o);this.statusById.set(o,i);let a=this.circleById.get(o);if(a&&(this.paintSeat(a,o),n=!0),r){let l=this.seatSection.get(o);l&&(s==="free"!=(i==="free")&&(l.free+=i==="free"?1:-1),r.add(l))}}if(r&&r.size){for(let o of r)this.refreshSectionFill(o);this.bgLayer.batchDraw()}n&&(this.cached?(this.recacheTimer&&clearTimeout(this.recacheTimer),this.recacheTimer=setTimeout(()=>this.cacheSeatLayer(),150)):this.seatLayer.batchDraw(),this.effScale()>ue&&this.updateLabels())}setSeatCategories(e){let i=!1,n=new Set;for(let[o,s]of Object.entries(e)){let a=this.seatById.get(o);if(!a||!this.catColor.has(s)||a.categoryKey===s)continue;a.categoryKey=s;let l=this.circleById.get(o);l&&(this.paintSeat(l,o),i=!0);let c=this.seatSection.get(o);c&&n.add(c)}if(!i)return;let r=new Map((this.chartDoc?Ne(this.chartDoc):[]).flatMap(o=>o.objects).filter(o=>o.type==="section").map(o=>[o.id,o]));for(let o of n){if(!r.get(o.id)?.color){let a=new Map;for(let l of o.memberIds){let c=this.seatById.get(l)?.categoryKey;c&&a.set(c,(a.get(c)??0)+1)}o.baseFill=Wi([...a].map(([l,c])=>({hex:this.catColor.get(l)??"#6e7bff",w:c})),"#3a4358")}this.refreshSectionFill(o)}n.size&&this.bgLayer.batchDraw(),this.cached?(this.recacheTimer&&clearTimeout(this.recacheTimer),this.recacheTimer=setTimeout(()=>this.cacheSeatLayer(),150)):this.seatLayer.batchDraw(),this.effScale()>ue&&this.updateLabels()}setOwnedHold(e){let i=new Set((e??[]).filter(r=>this.statusById.has(r))),n=new Set([...this.ownedHold,...i]);this.ownedHold=i;for(let r of n){let o=this.circleById.get(r);o&&this.paintSeat(o,r),this.syncSelectionMarker(r)}n.size&&(this.cached?(this.recacheTimer&&clearTimeout(this.recacheTimer),this.recacheTimer=setTimeout(()=>this.cacheSeatLayer(),150)):this.seatLayer.batchDraw(),this.effScale()>ue&&this.updateLabels(),this.overlayLayer.batchDraw())}setSelectionFocus(e){let i=e&&this.selection.has(e)?e:null;if(i===this.selectionFocusId)return;let n=this.selectionFocusId;this.selectionFocusId=i;for(let r of this.seats){let o=this.circleById.get(r.id);o&&this.paintSeat(o,r.id)}n&&this.syncSelectionMarker(n),i&&this.syncSelectionMarker(i);for(let[r,o]of this.selectionMarkers)o.opacity(!i||r===i?1:.2);this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw(),this.overlayLayer.batchDraw()}getStatus(e){return this.statusById.get(e)??"free"}getSelection(){let e=[];for(let i of this.selection){let n=this.seatById.get(i);n&&e.push(n)}return e}clearSelection(){let e=[...this.selection];for(let i of e)this.setSelected(i,!1,!0);this.overlayLayer.batchDraw()}setMaxSelection(e){this.opts.maxSelection=Math.max(0,Math.floor(e))}select(e){let i=[];for(let n of e){if(this.selection.has(n)||!this.isSelectable(n))continue;if(this.selection.size>=this.opts.maxSelection){this.opts.onSelectionLimit?.(this.opts.maxSelection);break}this.setSelected(n,!0,!0);let r=this.seatById.get(n);r&&i.push(r)}return i.length&&this.overlayLayer.batchDraw(),i}setManageInteraction(e){this.marquee&&this.cancelMarquee(),this.gestures.resetPan(),this.opts.manageMode=e.manageMode,this.opts.marqueeSelect=e.marqueeSelect,this.opts.selectableStatuses=[...e.selectableStatuses],e.maxSelection!=null&&(this.opts.maxSelection=e.maxSelection);let i=[...this.selection].filter(n=>!this.isSelectable(n));i.length&&this.deselect(i),!e.manageMode&&this.selection.size&&this.clearSelection(),this.container.style.cursor="default",this.overlayLayer.batchDraw()}setSectionHeat(e){this.sectionHeat.clear();for(let[i,n]of Object.entries(e??{}))Number.isFinite(n)&&this.sectionHeat.set(i,Math.max(0,Math.min(1,n)));for(let i of this.sections)this.refreshSectionHeat(i);this.bgLayer.batchDraw()}deselect(e){let i=!1;for(let n of e)this.selection.has(n)&&(this.setSelected(n,!1,!0),i=!0);i&&this.overlayLayer.batchDraw()}selectAllSelectable(){if(!this.opts.manageMode)return[];let e=[];for(let i of this.seats)this.isSelectable(i.id)&&e.push(i.id);return this.selectMany(e)}selectByLabels(e){if(!this.opts.manageMode)return[];let i=new Set(e),n=[];for(let r of this.seats)i.has(r.label)&&this.isSelectable(r.id)&&n.push(r.id);return this.selectMany(n)}setEvidenceSelection(e){return!this.seatById.has(e)||!this.isSelectable(e)?!1:(this.selection.size&&this.clearSelection(),this.setSelected(e,!0),this.overlayLayer.batchDraw(),this.selection.has(e))}getSelectableInSection(e){let i=[],n=new Set;for(let r of this.sections)if(!(r.id!==e&&r.logicalId!==e&&r.zone!==e))for(let o of r.memberIds){if(n.has(o)||(n.add(o),!this.isSelectable(o)))continue;let s=this.seatById.get(o);s&&i.push(s)}return i}selectMany(e){let i=e.filter(r=>!this.selection.has(r));if(!i.length)return this.getSelection();let n=this.selection.size+i.length<=zr;for(let r of i)if(n)this.setSelected(r,!0,!0);else{this.selection.add(r);let o=this.circleById.get(r);o&&this.paintSeat(o,r)}return this.cached||this.seatLayer.batchDraw(),this.overlayLayer.batchDraw(),this.getSelection()}beginMarquee(e){let i=this.screenToWorld(e),n=this.stage.scaleX()||1,r=new Ee.Rect({x:i.x,y:i.y,width:0,height:0,stroke:this.effSelection,strokeWidth:1.5/n,dash:[5/n,4/n],fill:"rgba(110,123,255,0.10)",listening:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1});this.overlayLayer.add(r),this.marquee={start:i,rect:r},this.marqueeCur=i,this.overlayLayer.batchDraw()}updateMarquee(e){if(!this.marquee)return;let i=this.screenToWorld(e),{start:n,rect:r}=this.marquee;r.setAttrs({x:Math.min(n.x,i.x),y:Math.min(n.y,i.y),width:Math.abs(i.x-n.x),height:Math.abs(i.y-n.y)}),this.marqueeCur=i,this.overlayLayer.batchDraw()}cancelMarquee(){this.marquee&&(this.marquee.rect.destroy(),this.marquee=null,this.marqueeCur=null,this.overlayLayer.batchDraw())}finishMarquee(){let e=this.marquee;if(this.marquee=null,!e)return;e.rect.destroy(),this.overlayLayer.batchDraw();let i=this.marqueeCur??e.start;this.marqueeCur=null;let n=Math.min(e.start.x,i.x),r=Math.max(e.start.x,i.x),o=Math.min(e.start.y,i.y),s=Math.max(e.start.y,i.y),a=this.stage.scaleX()||1;if((r-n)*a<4&&(s-o)*a<4){this.selection.size&&(this.clearSelection(),this.opts.onMarquee?.([]));return}let l=[];for(let c of this.seats){let d=this.renderedSeatPoint(c);d.x<n||d.x>r||d.y<o||d.y>s||this.isSelectable(c.id)&&l.push(c.id)}this.selectMany(l),this.opts.onMarquee?.(this.getSelection())}flashSeat(e,i="#f43f5e"){let n=this.seatById.get(e);if(!n)return;let r=this.renderedSeatPoint(n),o=new ve.Circle({x:r.x,y:r.y,radius:this.seatR,stroke:i,strokeWidth:3,opacity:.9,listening:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1}),s=this.viewMode==="perspective"?this.perspectiveSeatScale.get(e)??1:1;o.scale({x:s,y:s}),this.overlayLayer.add(o);let a=performance.now(),l=620,c=d=>{if(!o.getLayer())return;let p=Math.min(1,(d-a)/l);o.radius(this.seatR*(1+p*1.8)),o.opacity(.9*(1-p)),this.overlayLayer.batchDraw(),p<1?requestAnimationFrame(c):(o.destroy(),this.overlayLayer.batchDraw())};requestAnimationFrame(c)}flashSection(e,i="#22a06b"){let n=this.sections.filter(r=>r.id===e||r.zone===e);if(n.length)for(let r of n){let o=this.viewMode==="perspective"&&r.perspectiveAffine?r.outline.map(u=>this.perspectiveLocalPoint(this.projectedSectionPoint(r,u))):r.outline.map(u=>{let m=r.liftWorld>0?this.isoLiftLocal(r.liftWorld):{x:0,y:0};return{x:u.x+m.x,y:u.y+m.y}}),s=o.reduce((u,m)=>({x:u.x+m.x,y:u.y+m.y}),{x:0,y:0});s.x/=o.length,s.y/=o.length;let a=new et.Line({x:s.x,y:s.y,points:o.flatMap(u=>[u.x-s.x,u.y-s.y]),closed:!0,stroke:i,strokeWidth:3,strokeScaleEnabled:!1,opacity:.92,listening:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!0,shadowColor:i,shadowBlur:14,shadowOpacity:.7});this.overlayLayer.add(a),this.overlayLayer.batchDraw();let l=()=>{a.getLayer()&&(a.destroy(),this.overlayLayer.batchDraw())};if(this.reducedMotion||typeof document<"u"&&document.hidden){setTimeout(l,520);continue}let c=performance.now(),d=820,p=u=>{if(this.destroyed||!a.getLayer())return;let m=Math.min(1,(u-c)/d),f=1+(1-Math.pow(1-m,3))*.04;a.scale({x:f,y:f}),a.opacity(.92*(1-m)),this.overlayLayer.batchDraw(),m<1?requestAnimationFrame(p):l()};requestAnimationFrame(p)}}nearestSeat(e,i){let n=this.seatById.get(e);if(!n)return null;let r=this.viewMode==="perspective"?this.perspectiveSeatProjected.get(n.id)??n:n,o=null,s=1/0;for(let a of this.seats){if(a.id===e)continue;let l=this.viewMode==="perspective"?this.perspectiveSeatProjected.get(a.id)??a:a,c=l.x-r.x,d=l.y-r.y,p=c*i.x+d*i.y;if(p<=.5)continue;let u=Math.abs(c*i.y-d*i.x),m=p+u*2.5;m<s&&(s=m,o=a.id)}return o}focusSeat(e){let i=this.seatById.get(e);if(!i)return;this.focusedId=e,this.focusRing.radius(this.seatR+3),this.focusRing.position(this.renderedSeatPoint(i));let n=this.viewMode==="perspective"?this.perspectiveSeatScale.get(e)??1:1;this.focusRing.scale({x:n,y:n}),this.focusRing.visible(!0),this.ensureVisible(i),this.overlayLayer.batchDraw(),this.opts.onFocusSeat?.(i)}ensureVisible(e){let i=this.stage.width(),n=this.stage.height(),r=Math.max(this.stage.scaleX(),Pe*1.2),o=this.worldToScreen(e),s=70,a=o.x<s||o.x>i-s||o.y<s||o.y>n-s;if(this.stage.scaleX()<r||a){let l=this.renderedSeatPoint(e),c=this.viewMode==="perspective"&&this.perspectiveBaseAffine?re(this.perspectiveBaseAffine,l):this.isoT===0?l:this.isoForward(l);this.stage.scale({x:r,y:r}),this.stage.position({x:i/2-c.x*r,y:n/2-c.y*r}),this.afterViewChange(),this.stage.batchDraw()}}zoomToFit(){let e=this.stage.width(),i=this.stage.height(),n=this.viewMode==="perspective"&&this.perspectiveBounds?this.perspectiveBounds:this.bounds;if(this.fitScale=Math.min(e/n.width,i/n.height)||1,this.opts.portraitFitCrop&&!this.exportMode){let o=e/n.width<=i/n.height,s=n.height*this.fitScale;o&&s<.55*i&&(this.fitScale=Math.min(this.fitScale*1.3,.62*i/n.height))}let r=this.fitScale;this.stage.scale({x:r,y:r}),this.stage.position({x:(e-n.width*r)/2-n.x*r,y:(i-n.height*r)/2-n.y*r}),this.afterViewChange(),this.stage.batchDraw()}refitCurrentView(){if(this.focusedSectionId&&this.sectionBounds(this.focusedSectionId)){this.focusRegion(this.focusedSectionId,{animate:!1});return}this.zoomToFit()}zoomIn(){let e={x:this.stage.width()/2,y:this.stage.height()/2};this.zoomAbout(this.stage.scaleX()*Lt.ZOOM_STEP,e)}zoomOut(){let e={x:this.stage.width()/2,y:this.stage.height()/2};this.zoomAbout(this.stage.scaleX()/Lt.ZOOM_STEP,e)}seatCount(){return this.seats.length}bookableCount(){let e=this.seats.length;for(let i of this.gaById.values())e+=i.capacity;return e}worldToScreen(e){let i=this.stage.scaleX(),n=e.id,r=typeof n=="string"?this.seatById.get(n):void 0;if(this.viewMode==="perspective"&&this.perspectiveBaseAffine){let a=r?this.perspectiveSeatProjected.get(r.id)??re(this.perspectiveBaseAffine,e):re(this.perspectiveBaseAffine,e);return{x:a.x*i+this.stage.x(),y:a.y*i+this.stage.y()}}let o=r?this.renderedSeatPoint(r):e,s=this.isoT===0?o:this.isoForward(o);return{x:s.x*i+this.stage.x(),y:s.y*i+this.stage.y()}}setAccessibleFilter(e){this.setAccessibilityFilter(e?[]:null)}setAccessibilityFilter(e){let i=e===null?null:[...e];if(!this.sameAccessFilter(i)){this.accessFilter=i,this.updateAccessGlyphs(this.effScale());for(let n of this.seats){let r=this.circleById.get(n.id);r&&this.paintSeat(r,n.id)}this.updateLabels(),this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw()}}sameAccessFilter(e){let i=this.accessFilter;return i===null||e===null?i===e:i.length===e.length&&i.every((n,r)=>n===e[r])}setCommercialLimitedFilter(e){if(this.commercialLimitedFilter!==e){this.commercialLimitedFilter=e;for(let i of this.seats){let n=this.circleById.get(i.id);n&&this.paintSeat(n,i.id)}this.updateLabels(),this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw()}}setCategoryFilter(e){let i=e===null?null:new Set(e);if(!(i===null&&this.categoryFilter===null||i!==null&&this.categoryFilter!==null&&i.size===this.categoryFilter.size&&[...i].every(r=>this.categoryFilter.has(r)))){this.categoryFilter=i;for(let r of this.seats){let o=this.circleById.get(r.id);o&&this.paintSeat(o,r.id)}this.updateLabels(),this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw(),this.applyGAFilterState()}}gaCategoryDimmed(e){return!!(this.categoryHighlight&&e!==this.categoryHighlight||this.categoryFilter&&!this.categoryFilter.has(e))}applyGAFilterState(){this.paintGAStateForView(),this.updateFreeTextVisibility(),this.bgLayer.batchDraw()}paintGAStateForView(){for(let e of this.gaById.values()){let i=!!(this.categoryFilter&&!this.categoryFilter.has(e.categoryKey)),n=!this.exportMode&&e.sectionId!=null&&this.effScale()<se;e.polygon.opacity(n?0:this.gaCategoryDimmed(e.categoryKey)?je*.08:je),e.polygon.listening(!this.exportMode&&!n&&!i)}}focusCategories(e){if(!e?.length){this.focusRegion(this.bounds,{durationMs:Qt});return}let i=new Set(e),n=this.seats.filter(c=>!i.has(c.categoryKey)||this.seatInClosedSection(c.id)?!1:(this.statusById.get(c.id)??"free")==="free"||this.ownedHold.has(c.id));if(!n.length)return;let r=1/0,o=-1/0,s=1/0,a=-1/0;for(let c of n){let d=this.renderedSeatPoint(c);r=Math.min(r,d.x),o=Math.max(o,d.x),s=Math.min(s,d.y),a=Math.max(a,d.y)}let l=Math.max(24,this.seatR*3);r-=l,o+=l,s-=l,a+=l,this.focusRegion({x:r,y:s,width:Math.max(40,o-r),height:Math.max(40,a-s)},{durationMs:Qt})}setViewMode(e){if(e==="perspective"){if(this.viewMode===e){this.afterViewChange();return}let a=this.viewMode==="isometric"&&this.isoT>0;this.viewMode=e,this.isoTarget=1,this.isoT=1,this.isoRaf&&(cancelAnimationFrame(this.isoRaf),this.isoRaf=0),this.applyPerspective(a),this.zoomToFit();return}let i=e==="isometric"?1:0,n=this.viewMode==="perspective";if(this.viewMode=e,this.isoTarget=i,this.isoRaf&&(cancelAnimationFrame(this.isoRaf),this.isoRaf=0),n){this.isoT=i,this.applyIso(),this.afterViewChange();return}if(this.reducedMotion){this.isoT=i,this.applyIso(),this.afterViewChange();return}let r=this.isoT;if(r===i){this.applyIso(),this.afterViewChange();return}let o=performance.now(),s=a=>{if(this.destroyed)return;let l=Math.min(1,(a-o)/Nr),c=l<.5?4*l*l*l:1-Math.pow(-2*l+2,3)/2;this.isoT=r+(this.isoTarget-r)*c,this.applyIso(),this.scheduleViewChange(),l<1?this.isoRaf=requestAnimationFrame(s):(this.isoT=this.isoTarget,this.isoRaf=0,this.applyIso(),this.afterViewChange())};this.isoRaf=requestAnimationFrame(s)}getViewMode(){return this.viewMode}get isoState(){return{isoT:this.isoT,centre:this.isoCentre}}isoParams(){return It(this.isoState)}effScale(){if(this.viewMode==="perspective"&&this.perspectiveBaseAffine){let e=Math.hypot(this.perspectiveBaseAffine.a,this.perspectiveBaseAffine.b),i=Math.hypot(this.perspectiveBaseAffine.c,this.perspectiveBaseAffine.d);return this.stage.scaleX()*Math.min(e,i)}return this.stage.scaleX()*(1-(1-yt)*this.isoT)}isoForward(e){return Ao(e,this.isoState)}isoInverse(e){return Bo(e,this.isoState)}buildPerspectiveProjection(e){let i=Go({seats:this.seats,objects:e.objects,bounds:this.bounds,seatR:this.seatR,floorBaseHeightMFor:n=>this.floorBaseHeightMFor(n)},{seatLocal:this.perspectiveSeatLocal,seatProjected:this.perspectiveSeatProjected,seatDepth:this.perspectiveSeatDepth,seatScale:this.perspectiveSeatScale});this.perspectiveCamera=i.camera,this.perspectiveBaseAffine=i.baseAffine,this.perspectiveBaseInverse=i.baseInverse,this.perspectiveBounds=i.bounds}setContainerAffine(e,i,n){Fo(e,i,n)}resetContainerTransform(e){Do(e)}sectionSurfaceHeight(e,i){return _o(e,i)}projectedSectionPoint(e,i){return zo(e,i,this.perspectiveBaseAffine)}perspectiveLocalPoint(e){return No(e,this.perspectiveBaseInverse)}isoLiftLocal(e){return Oo(e,this.isoState)}resetLayerTransforms(e=!0){let i=e?[this.bgLayer,this.seatLayer,this.overlayLayer]:[this.bgLayer,this.overlayLayer];for(let n of i)n.position({x:0,y:0}),n.offset({x:0,y:0}),n.scale({x:1,y:1}),n.rotation(0),n.skewX(0),n.skewY(0)}resetSectionProjection(e=!0){for(let i of this.sections){this.resetContainerTransform(i.rootGroupBg),this.resetContainerTransform(i.liftGroupBg),e&&this.resetContainerTransform(i.liftGroupSeat),i.rootGroupBg.zIndex(i.bgZIndex),e&&i.liftGroupSeat.zIndex(i.seatZIndex);let n=this.labelLiftGroups.get(i.id);n&&e&&this.resetContainerTransform(n),i.perspectiveAffine=void 0,i.perspectiveCorrection=void 0,i.perspectiveDepth=void 0}}get seatAnchorContext(){return{seats:this.seats,seatById:this.seatById,seatR:this.seatR,perspectiveSeatProjected:this.perspectiveSeatProjected,perspectiveSeatScale:this.perspectiveSeatScale,perspectiveAppliedSeats:this.perspectiveAppliedSeats,circleById:this.circleById,accessRingById:this.accessRingById,accessGlyphById:this.accessGlyphById,boothLabelById:this.boothLabelById}}applyExactSeatAnchors(e,i){Ho(this.seatAnchorContext,e,i)}applyPerspective(e=!0){let i=this.perspectiveCamera,n=this.perspectiveBaseAffine,r=this.perspectiveBaseInverse;if(!i||!n||!r)return;let o=this.seats.length>2500&&this.sections.length>0;this.cached&&!o&&(this.seatLayer.clearCache(),this.seatLayer.listening(!0),this.cached=!1),this.resetLayerTransforms(e),this.resetSectionProjection(e);for(let a of[this.bgLayer,this.overlayLayer])this.setContainerAffine(a,n,i.target);this.perspectiveAppliedSeats.clear(),o||this.applyExactSeatAnchors(!0);for(let a of this.sections){let l=p=>this.sectionSurfaceHeight(a,p),c=Ut(i,a.centroid,l),d=kr(r,c);a.perspectiveAffine=c,a.perspectiveCorrection=d,a.perspectiveDepth=ie(i,a.centroid,l(a.centroid)).depth,this.setContainerAffine(a.liftGroupBg,d,a.centroid);for(let p=0;p<a.sideFaces.length;p++){let u=a.outline[p],m=a.outline[(p+1)%a.outline.length],b=this.perspectiveLocalPoint(ie(i,u,0)),f=this.perspectiveLocalPoint(ie(i,m,0)),h=this.perspectiveLocalPoint(ie(i,m,l(m))),g=this.perspectiveLocalPoint(ie(i,u,l(u)));a.sideFaces[p].points([b.x,b.y,f.x,f.y,h.x,h.y,g.x,g.y]),a.sideFaces[p].opacity(.9)}}let s=[...this.sections].sort((a,l)=>(l.perspectiveDepth??0)-(a.perspectiveDepth??0));for(let a of s)a.rootGroupBg.moveToTop(),a.liftGroupSeat.moveToTop();this.unsectionedSeatGroup?.moveToTop(),this.syncSeatOverlayPositions(),o||this.updateSeatGroupVisibility(),this.bgLayer.batchDraw(),this.seatLayer.batchDraw(),this.overlayLayer.batchDraw()}applyIso(){if(this.resetSectionProjection(),this.applyExactSeatAnchors(!1),this.isoT===0)this.resetLayerTransforms();else{let{th:i,sg:n}=this.isoParams(),r=Math.cos(i),o=n*Math.sin(i),s=-Math.sin(i),a=n*Math.cos(i),l=Math.sqrt(r*r+o*o),c=r*a-o*s,d=Math.atan2(o,r)*180/Math.PI,p=l,u=c/l,m=(r*s+o*a)/c,b=this.isoCentre;for(let f of[this.bgLayer,this.seatLayer,this.overlayLayer])f.position({x:b.x,y:b.y}),f.offset({x:b.x,y:b.y}),f.rotation(d),f.scaleX(p),f.scaleY(u),f.skewX(m),f.skewY(0)}this.applyUprightLabels(),this.applyElevation(),this.updateSeatGroupVisibility(),this.bgLayer.batchDraw(),this.seatLayer.batchDraw(),this.overlayLayer.batchDraw()}applyUprightLabels(){let e=Zt*this.isoT,i=1/(1-(1-yt)*this.isoT),n=this.hasBoothText?[this.bgLayer,this.seatLayer,this.overlayLayer]:[this.bgLayer,this.overlayLayer];for(let r of n){let o=r.find("Text");for(let s of o){let a=s.getAttr("uprightBase");a==null&&(a=s.rotation(),s.setAttr("uprightBase",a)),s.rotation(a-e),s.scaleX(1),s.scaleY(i),s.skewX(0)}}}applyElevation(){let e=this.isoT;for(let i of this.sections){if(i.liftWorld<=0)continue;let n=this.isoLiftLocal(i.liftWorld);i.liftGroupBg?.position(n),i.liftGroupSeat.position(n),this.labelLiftGroups.get(i.id)?.position(n);let r=.9*e;for(let o=0;o<i.sideFaces.length;o++){let s=i.sideFaces[o],a=i.outline[o],l=i.outline[(o+1)%i.outline.length];s.points([a.x,a.y,l.x,l.y,l.x+n.x,l.y+n.y,a.x+n.x,a.y+n.y]),s.opacity(r)}}this.syncSeatOverlayPositions()}destroy(){this.destroyed=!0,this.cancelAssetLoads(),this.rafId&&cancelAnimationFrame(this.rafId),this.isoRaf&&cancelAnimationFrame(this.isoRaf),this.glideRaf&&cancelAnimationFrame(this.glideRaf),this.viewChangeRaf&&cancelAnimationFrame(this.viewChangeRaf),this.recacheTimer&&clearTimeout(this.recacheTimer),this.resizeObs?.disconnect(),this.gestures.detach(),this.container.removeEventListener("keydown",this.onKeyDown),this.stage.destroy()}labelFont(){return this.exportMode?this.theme.fontFamily?.toLowerCase().includes("jetbrains")?"JetBrains Mono, monospace":"Inter, sans-serif":this.theme.fontFamily||"Inter, sans-serif"}seatContainer(e){return this.seatSection.get(e)?.liftGroupSeat??this.unsectionedSeatGroup??this.seatLayer}sectionMatchesFocus(e){let i=this.focusedSectionId;return i==null||e.id===i||e.logicalId===i||e.zone===i}focusedSeatOpacity(e,i){if(!this.focusedSectionId)return i;let n=this.seatSection.get(e);return i*(n&&this.sectionMatchesFocus(n)?1:St)}sectionScreenBounds(e){if(this.viewMode==="perspective"&&e.perspectiveAffine){let s=this.stage.scaleX(),a=this.stage.x(),l=this.stage.y();return U(e.outline.map(c=>{let d=this.projectedSectionPoint(e,c);return{x:d.x*s+a,y:d.y*s+l}}))}let i=e.liftWorld>0?this.isoLiftLocal(e.liftWorld):{x:0,y:0},n=this.stage.scaleX(),r=this.stage.x(),o=this.stage.y();return U(e.outline.map(s=>{let a={x:s.x+i.x,y:s.y+i.y},l=this.isoT===0?a:this.isoForward(a);return{x:l.x*n+r,y:l.y*n+o}}))}updateSeatGroupVisibility(){let e=this.exportMode||this.effScale()>=se,i=this.viewMode==="perspective"&&this.glideInProgress&&this.seats.length>2500,n=96,r=this.stage.width(),o=this.stage.height();for(let s of this.sections){let a=!0;if(e){let c=this.sectionScreenBounds(s);a=c.x+c.width>=-n&&c.y+c.height>=-n&&c.x<=r+n&&c.y<=o+n,a&&this.viewMode==="perspective"&&!i&&this.applyExactSeatAnchors(!0,s.memberIds)}s.liftGroupSeat.setViewportCulled(!a),this.labelLiftGroups.get(s.id)?.setViewportCulled(!a)}this.unsectionedSeatGroup&&!this.unsectionedSeatGroup.visible()&&this.unsectionedSeatGroup.visible(!0),e&&this.viewMode==="perspective"&&!i&&this.applyExactSeatAnchors(!0,this.seats.filter(s=>!this.seatSection.has(s.id)).map(s=>s.id))}visibleSeatCandidates(){if(!this.sections.length)return this.seats;let e=[];for(let i of this.sections)if(!i.liftGroupSeat.isViewportCulled())for(let n of i.memberIds){let r=this.seatById.get(n);r&&e.push(r)}for(let i of this.seats)this.seatSection.has(i.id)||e.push(i);return e}seatViewportCulled(e){return this.seatSection.get(e)?.liftGroupSeat.isViewportCulled()??!1}renderedSeatPoint(e){if(this.viewMode==="perspective")return this.perspectiveSeatLocal.get(e.id)??e;let i=this.seatSection.get(e.id);if(!i||i.liftWorld<=0||this.isoT===0)return e;let n=this.isoLiftLocal(i.liftWorld);return{x:e.x+n.x,y:e.y+n.y}}seatLabelContainer(e){let i=this.seatSection.get(e);if(!i)return this.labelGroup;let n=this.labelLiftGroups.get(i.id);return n||(n=new vt({listening:!1}),n.setViewportCulled(i.liftGroupSeat.isViewportCulled()),n.position(this.viewMode==="perspective"?{x:0,y:0}:this.isoLiftLocal(i.liftWorld)),this.labelGroup.add(n),this.labelLiftGroups.set(i.id,n)),n}syncSeatOverlayPositions(){if(this.hoveredId){let e=this.seatById.get(this.hoveredId);if(e){this.hoverRing.position(this.renderedSeatPoint(e));let i=this.viewMode==="perspective"?this.perspectiveSeatScale.get(e.id)??1:1;this.hoverRing.scale({x:i,y:i})}}if(this.focusedId){let e=this.seatById.get(this.focusedId);if(e){this.focusRing.position(this.renderedSeatPoint(e));let i=this.viewMode==="perspective"?this.perspectiveSeatScale.get(e.id)??1:1;this.focusRing.scale({x:i,y:i})}}for(let[e,i]of this.selectionMarkers){let n=this.seatById.get(e);if(n){i.position(this.renderedSeatPoint(n));let r=this.viewMode==="perspective"?this.perspectiveSeatScale.get(n.id)??1:1;i.scale({x:r,y:r})}}}renderSeats(){let e=[...this.seats].sort((i,n)=>(this.perspectiveSeatDepth.get(n.id)??0)-(this.perspectiveSeatDepth.get(i.id)??0));for(let i of e){if(i.kind==="booth"){this.renderBoothUnit(i);continue}let n=this.seatContainer(i.id),r=i.wheelchairSpaceType==="no-seat"?new Ee.Rect({x:i.x,y:i.y,width:this.seatR*2,height:this.seatR*2,offsetX:this.seatR,offsetY:this.seatR,cornerRadius:2,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1,hitStrokeWidth:0}):new ve.Circle({x:i.x,y:i.y,radius:this.seatR,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1,hitStrokeWidth:0});if(r.setAttr("seatId",i.id),this.circleById.set(i.id,r),this.paintSeat(r,i.id),n.add(r),i.accessible){if(i.wheelchairSpaceType!=="no-seat"){let o=new ve.Circle({x:i.x,y:i.y,radius:this.seatR+1.5,stroke:Et(i.accessibility),strokeWidth:2.5,listening:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1});this.accessRingById.set(i.id,o),n.add(o)}if(i.accessibility?.includes("wheelchair")&&Ki(i.accessibility)){let o=this.buildAccessGlyph(i,typeof r.fill()=="string"?r.fill():"");this.accessGlyphById.set(i.id,o),n.add(o)}}}}renderBoothUnit(e){let i=this.seatContainer(e.id),n=this.boothDims.get(e.rowId)??{width:40,height:30,rotation:0},r=e.x,o=e.y,s;n.points&&n.points.length>=3?(s=new et.Line({x:e.x,y:e.y,points:n.points.flatMap(l=>[l.x,l.y]),closed:!0,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1,hitStrokeWidth:0}),r=e.x+n.points.reduce((l,c)=>l+c.x,0)/n.points.length,o=e.y+n.points.reduce((l,c)=>l+c.y,0)/n.points.length):s=new Ee.Rect({x:e.x,y:e.y,width:n.width,height:n.height,offsetX:n.width/2,offsetY:n.height/2,rotation:n.rotation,cornerRadius:4,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1,hitStrokeWidth:0}),s.setAttr("seatId",e.id),this.circleById.set(e.id,s),i.add(s);let a=new Ce.Text({x:r,y:o,text:e.displayLabel??e.label,fontSize:Ve,fontStyle:"600",fontFamily:this.labelFont(),fill:this.theme.seatLabelColor??si,listening:!1,perfectDrawEnabled:!1});a.offsetX(a.width()/2),a.offsetY(a.height()/2),a.visible(!1),this.hasBoothText=!0,this.boothLabelById.set(e.id,a),i.add(a),this.paintSeat(s,e.id)}buildAccessGlyph(e,i){let n=this.seatR*1.5/ce;return new jo.Path({x:e.x,y:e.y,data:Ki(e.accessibility??[])??"",offsetX:ce/2,offsetY:ce/2,scaleX:n,scaleY:n,fill:Ui(i),listening:!1,visible:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1})}updateAccessGlyphs(e){if(this.accessGlyphById.size)for(let[i,n]of this.accessGlyphById){let r=this.viewMode==="perspective"?this.perspectiveSeatScale.get(i)??1:1,o=this.seatR*1.5/ce*r,a=this.accessGlyphFilterEmphasized(i)?Or:Br,l=Math.max(o,a/(ce*Math.max(e,.001)));n.scale({x:l,y:l}),n.visible(this.accessGlyphShouldShow(i))}}accessGlyphFilterEmphasized(e){let i=this.seatById.get(e),n=this.accessFilter;return!!i&&n!==null&&!!i.accessibility?.includes("wheelchair")&&(n.length===0||n.includes("wheelchair"))&&tn(i,n)}accessGlyphShouldShow(e){return this.accessGlyphById.has(e)&&this.accessGlyphEligible(e)}accessGlyphEligible(e){let i=this.statusById.get(e)??"free";return!(i==="booked"||i==="held"&&!this.ownedHold.has(e)&&!this.opts.manageMode)}seatBaseColor(e){return this.colorblind?this.cbHueByKey.get(e)??ii[0]:this.catColor.get(e)??"#6e7bff"}seatLabelScale(e){return(e.labelStyle?.size??18)/18}seatPreferredLabelInk(e){return e.labelStyle?.color??this.theme.seatLabelColor??si}seatLabelInk(e,i){let n=i.fill();return J(typeof n=="string"?n:"",this.seatPreferredLabelInk(e),Vt)}paintSeat(e,i){let n=this.seatById.get(i),r=this.statusById.get(i)??"free",o=this.selection.has(i),s=this.seatBaseColor(n.categoryKey),a=this.boothLabelById.get(i);switch(e.dash([]),e.strokeWidth(0),e.stroke(""),e.opacity(1),r){case"free":e.fill(o&&this.effSelection===kt?we(s,.28):s);break;case"held":this.ownedHold.has(i)?(e.fill(we(s,this.effSelection===kt?.24:.1)),e.stroke(this.effSelection),e.strokeWidth(3)):e.fill(Kr);break;case"booked":this.colorblind?(e.fill("rgba(0,0,0,0)"),e.stroke(ti),e.strokeWidth(1.5),e.opacity(.9)):(e.fill(ti),e.opacity(.45));break;case"not_for_sale":e.fill(ti),e.stroke(Ur),e.strokeWidth(1),e.dash([2,2]);break}if(n.wheelchairSpaceType==="no-seat"&&r==="free"&&(e.stroke(Et(n.accessibility)),e.strokeWidth(o?3:2),e.dash([3,2])),a&&(a.text(r==="booked"?"SOLD":r==="held"?"HELD":n.label),a.fontSize(r==="free"?10:Math.min(10,Math.max(6,this.boothDims.get(n.rowId)?.width??40)/6)),a.fontStyle(r==="free"?"600":"800"),a.fill(r==="free"?this.theme.seatLabelColor??si:"#ffffff"),a.offsetX(a.width()/2),a.offsetY(a.height()/2)),this.accessFilter&&r==="free"&&!o&&!tn(n,this.accessFilter)&&e.opacity(.25),this.categoryHighlight&&r==="free"&&!o&&n.categoryKey!==this.categoryHighlight&&e.opacity(.25),this.categoryFilter&&r==="free"&&!o&&!this.categoryFilter.has(n.categoryKey)&&e.opacity(.22),this.commercialLimitedFilter&&r==="free"&&!o&&(n.commercial?.restrictedView||n.commercial?.obstructedView)&&e.opacity(.22),this.dimmedSections.size){let d=this.seatSection.get(i);(!d&&this.dimmedSections.has(He)||d&&(this.dimmedSections.has(d.id)||this.dimmedSections.has(d.logicalId)||d.zone!=null&&this.dimmedSections.has(d.zone)))&&e.opacity(.18)}this.closedSections.size&&this.seatInClosedSection(i)&&(e.fill(Xr),e.stroke(""),e.strokeWidth(0),e.dash([]),e.opacity(Yr)),this.selectionFocusId&&i!==this.selectionFocusId&&e.opacity(Math.min(e.opacity(),.16));let l=this.boothLabelById.get(i)??this.seatLabelById.get(i);l&&(l.fill(this.seatLabelInk(n,e)),l.visible(Ie(l.fontSize(),this.effScale())&&e.opacity()>=.5));let c=this.accessGlyphById.get(i);if(c){let d=e.fill();c.fill(Ui(typeof d=="string"?d:"")),c.opacity(e.opacity()),c.visible(this.accessGlyphShouldShow(i))}this.accessRingById.get(i)?.opacity(e.opacity())}seatInClosedSection(e){if(!this.closedSections.size)return!1;let i=this.seatSection.get(e);return!!i&&(this.closedSections.has(i.id)||this.closedSections.has(i.logicalId)||i.zone!=null&&this.closedSections.has(i.zone))}setColorblindSafe(e){if(e!==this.colorblind){this.colorblind=e;for(let i of this.seats){let n=this.circleById.get(i.id);n&&this.paintSeat(n,i.id)}this.updateLabels(),this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw()}}setDimmedSections(e){let i=new Set(e??[]);if(!(i.size===this.dimmedSections.size&&[...i].every(n=>this.dimmedSections.has(n)))){this.dimmedSections=i;for(let n of this.seats){let r=this.circleById.get(n.id);r&&this.paintSeat(r,n.id)}this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw()}}setClosedSections(e){let i=new Set(e??[]);i.size===this.closedSections.size&&[...i].every(n=>this.closedSections.has(n))||(this.closedSections=i,this.repaintSectionsAndSeats())}focusSection(e){this.sections.some(i=>i.id===e||i.logicalId===e)&&(this.focusedSectionId=e,this.drawFocusBackdrop(e),this.bgLayer.batchDraw(),this.overlayLayer.batchDraw(),this.updateLOD(),this.focusRegion(e))}releaseSectionFocusDim(){!this.focusBackdrop&&!this.focusDimOverlay||(this.focusBackdrop?.destroy(),this.focusBackdrop=null,this.focusDimOverlay?.destroy(),this.focusDimOverlay=null,this.bgLayer.batchDraw(),this.overlayLayer.batchDraw())}clearSectionFocus(){this.focusedSectionId&&(this.focusedSectionId=null,this.focusBackdrop&&(this.focusBackdrop.destroy(),this.focusBackdrop=null),this.focusDimOverlay?.destroy(),this.focusDimOverlay=null,this.bgLayer.batchDraw(),this.overlayLayer.batchDraw(),this.updateLOD())}getFocusedSection(){return this.focusedSectionId}drawFocusBackdrop(e){this.focusBackdrop&&(this.focusBackdrop.destroy(),this.focusBackdrop=null);let i=this.sections.filter(r=>r.id===e||r.logicalId===e);if(!i.length)return;let n=new Le.Group({listening:!1});for(let r of i){let o=this.viewMode==="perspective"&&r.perspectiveAffine,s=o?r.outline.map(l=>this.perspectiveLocalPoint(this.projectedSectionPoint(r,l))):r.outline,a=o?r.holes.map(l=>l.map(c=>this.perspectiveLocalPoint(this.projectedSectionPoint(r,c)))):r.holes;n.add(Je(s,a,{fill:qr,stroke:le("#ffffff",.1),strokeWidth:1,listening:!1},o?void 0:r.outlinePath))}this.bgLayer.add(n),n.moveToTop(),this.focusBackdrop=n,this.drawFocusDimOverlay(i)}drawFocusDimOverlay(e){this.focusDimOverlay?.destroy();let n=Math.max(this.bounds.width,this.bounds.height,1)*4+1e3,r=[{x:this.bounds.x-n,y:this.bounds.y-n},{x:this.bounds.x+this.bounds.width+n,y:this.bounds.y-n},{x:this.bounds.x+this.bounds.width+n,y:this.bounds.y+this.bounds.height+n},{x:this.bounds.x-n,y:this.bounds.y+this.bounds.height+n}],o=new Ko.Shape({fill:this.canvasBackground,opacity:1-St,listening:!1,perfectDrawEnabled:!1,sceneFunc:(s,a)=>{let l=c=>{if(c.length){s.moveTo(c[0].x,c[0].y);for(let d=1;d<c.length;d++)s.lineTo(c[d].x,c[d].y);s.closePath()}};s.beginPath(),l(r);for(let c of e){let d=this.viewMode==="perspective"&&c.perspectiveAffine?c.outline.map(p=>this.perspectiveLocalPoint(this.projectedSectionPoint(c,p))):c.outline.map(p=>{let u=c.liftWorld>0?this.isoLiftLocal(c.liftWorld):{x:0,y:0};return{x:p.x+u.x,y:p.y+u.y}});l(ht(d)>0?[...d].reverse():d)}s.fillStrokeShape(a)}});this.overlayLayer.add(o),o.moveToTop();for(let s of this.selectionMarkers.values())s.moveToTop();this.hoverRing.moveToTop(),this.focusRing.moveToTop(),this.focusDimOverlay=o}repaintSectionsAndSeats(){for(let e of this.seats){let i=this.circleById.get(e.id);i&&this.paintSeat(i,e.id)}for(let e of this.sections)e.blockPoly.fill(this.sectionBlockFill(e));this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw(),this.bgLayer.batchDraw()}getVisibleWorldRect(){let e=this.screenToWorld({x:0,y:0}),i=this.screenToWorld({x:this.stage.width(),y:this.stage.height()});return{x:Math.min(e.x,i.x),y:Math.min(e.y,i.y),width:Math.abs(i.x-e.x),height:Math.abs(i.y-e.y)}}getWorldBounds(){let e=1/0,i=1/0,n=-1/0,r=-1/0,o=(s,a)=>{s<e&&(e=s),a<i&&(i=a),s>n&&(n=s),a>r&&(r=a)};for(let s of this.seats)o(s.x,s.y);for(let s of this.sections)for(let a of s.outline)o(a.x,a.y);for(let s of this.gaById.values())for(let a of s.points)o(a.x,a.y);return Number.isFinite(e)?{x:e,y:i,width:Math.max(1,n-e),height:Math.max(1,r-i)}:{x:0,y:0,width:1,height:1}}getMinimapSnapshot(){let e=this.sections.map(i=>{let n=this.isSectionClosed(i)||i.free<=0,r=i.memberIds.some(s=>this.selection.has(s)),o=this.focusedSectionId===i.id||this.focusedSectionId===i.logicalId;return{id:i.logicalId,label:i.label,outline:i.outline.map(s=>({...s})),...this.objectFloor.get(i.id)?{floorId:this.objectFloor.get(i.id)}:{},state:r?"selected":n?"inactive":"available",active:o}});return{sections:e,seats:e.length?[]:this.seats.map(i=>({x:i.x,y:i.y,categoryKey:i.categoryKey,state:this.selection.has(i.id)?"selected":this.statusById.get(i.id)==="free"?"available":"inactive"}))}}panToWorld(e){this.cancelGlide();let i=this.worldToScreen(e);this.stage.position({x:this.stage.x()+this.stage.width()/2-i.x,y:this.stage.y()+this.stage.height()/2-i.y}),this.afterViewChange(),this.stage.batchDraw()}setCategoryHighlight(e){if(this.categoryHighlight!==e){this.categoryHighlight=e;for(let i of this.seats){let n=this.circleById.get(i.id);n&&this.paintSeat(n,i.id)}this.updateLabels(),this.cached?(this.seatLayer.clearCache(),this.cacheSeatLayer()):this.seatLayer.batchDraw(),this.applyGAFilterState()}}renderBackground(e){let i=Xe(e);i&&this.renderBackgroundImage(i);for(let n of e.objects)n.type==="decorImage"&&this.renderDecorImage(n);for(let n of e.objects)n.type==="section"&&this.renderSection(n);this.renderZones(e);for(let n of e.objects)n.type==="shape"?this.renderShape(n):n.type==="gaArea"?this.renderGA(n):n.type==="table"?this.renderTable(n):n.type==="text"&&this.renderText(n)}trackAssetImage(e,i,n,r){let o=this.assetGeneration;/^https?:\/\//i.test(i)&&(e.crossOrigin="anonymous");let s=new Promise(a=>{let l=!1,c=()=>{l||(l=!0,this.assetCancels.delete(d),a())},d=()=>{e.onload=null,e.onerror=null;try{e.removeAttribute("src"),e.src=""}catch{}c()};this.assetCancels.add(d),e.onload=()=>{if(!this.exportMode){o===this.assetGeneration&&r(),c();return}(typeof e.decode=="function"?e.decode():Promise.resolve()).then(()=>{o===this.assetGeneration&&r()}).catch(()=>{o===this.assetGeneration&&this.assetErrors.push(`${n} could not be decoded.`)}).finally(c)},e.onerror=()=>{o===this.assetGeneration&&this.assetErrors.push(`${n} could not be loaded.`),c()},e.src=i});this.assetPromises.push(s)}cancelAssetLoads(){this.assetGeneration++;for(let e of[...this.assetCancels])e();this.assetCancels.clear(),this.assetPromises=[],this.assetErrors=[]}renderBackgroundImage(e){if(!e.url||e.visible===!1)return;let i=new window.Image;this.trackAssetImage(i,e.url,"Buyer background image",()=>{let n=i.naturalWidth||4,r=i.naturalHeight||3,o=e.crop??{x:0,y:0,width:1,height:1},s=Math.max(0,Math.min(.99,o.x)),a=Math.max(0,Math.min(.99,o.y)),l={x:s,y:a,width:Math.max(.01,Math.min(1-s,o.width)),height:Math.max(.01,Math.min(1-a,o.height))},c=e.width,d=c*(r*l.height/(n*l.width)),p=new Wo.Image({image:i,x:e.center.x,y:e.center.y,offsetX:c/2,offsetY:d/2,width:c,height:d,rotation:e.rotation??0,crop:{x:l.x*n,y:l.y*r,width:l.width*n,height:l.height*r},opacity:e.opacity,listening:!1});this.bgLayer.add(p),p.moveToBottom(),this.bgLayer.batchDraw()})}get objectDrawContext(){return{bgLayer:this.bgLayer,fgDecorGroup:this.fgDecorGroup,container:this.container,opts:this.opts,theme:this.theme,canvasBackground:this.canvasBackground,catColor:this.catColor,sections:this.sections,freeTextById:this.freeTextById,gaById:this.gaById,iconNodeById:this.iconNodeById,primaryFocalLabels:this.primaryFocalLabels,labelFont:()=>this.labelFont(),trackAssetImage:(e,i,n,r)=>this.trackAssetImage(e,i,n,r),isGhostClick:e=>this.isGhostClick(e)}}renderDecorImage(e){So(this.objectDrawContext,e)}renderTable(e){vo(this.objectDrawContext,e)}renderText(e){ko(this.objectDrawContext,e)}renderShape(e){xo(this.objectDrawContext,e)}renderGA(e){wo(this.objectDrawContext,e)}renderSection(e){let i=at(e.outline,e.holes),n=he(this.canvasBackground),r=[],o=new Map,s=0,a=U(e.outline),l=this.seatIndex?Kt(this.seatIndex,a).map(T=>this.seatById.get(T)).filter(T=>!!T):this.seats;for(let T of l)this.seatSection.has(T.id)||Y(T,e.outline,e.holes)&&(r.push(T.id),o.set(T.categoryKey,(o.get(T.categoryKey)??0)+1),(this.statusById.get(T.id)??"free")==="free"&&s++);let c=e.color??Wi([...o].map(([T,E])=>({hex:this.catColor.get(T)??"#6e7bff",w:E})),"#3a4358"),d=Wn(e.elevation),p=xe(e,{floorBaseHeightM:this.floorBaseHeightMFor(e.id)}),u=p.height*De,m=new Le.Group({listening:!1});this.bgLayer.add(m);let b=new Le.Group({listening:!1});m.add(b);let f=new vt({listening:!0});this.seatLayer.add(f);let h=[];if(u>0){let T=ge(this.zoneColor.get(e.zone??"")??c,.42);for(let E=0;E<e.outline.length;E++){let A=new et.Line({points:[],closed:!0,fill:T,stroke:le("#000000",.25),strokeWidth:1,opacity:0,listening:!1,perfectDrawEnabled:!1});h.push(A),m.add(A)}}b.moveToTop();let g=b,S=e.color??this.zoneColor.get(e.zone??"")??"#3a4358",y=Je(e.outline,e.holes,{stroke:le(S,.5),strokeWidth:1,fill:le(S,.08),listening:!1},e.outlinePath);g.add(y);let x=Je(e.outline,e.holes,{fill:n.sectionFill,stroke:n.sectionStroke,strokeWidth:Jt,opacity:0,listening:!1},e.outlinePath);g.add(x);let I=e.labelPresentation?.labelStyle,k=I?.color??n.sectionInk,w=(I?.size??18)/18,M=new Ce.Text({x:e.labelPresentation?.position?.x??i.x,y:e.labelPresentation?.position?.y??i.y,text:e.displayLabel??e.label,rotation:e.labelPresentation?.rotation??0,visible:e.labelPresentation?.visible!==!1,fontSize:22*w,fontStyle:"700",fontFamily:this.labelFont(),fill:J(n.sectionFill,k),listening:!1,perfectDrawEnabled:!1});M.offsetX(M.width()/2),M.offsetY(M.height()/2),g.add(M);let C=new Ce.Text({x:i.x,y:i.y,text:oe("map.seatsLeft",{count:s}),fontSize:12,fontStyle:"700",fontFamily:"JetBrains Mono, ui-monospace, monospace",fill:n.sectionInk,opacity:0,listening:!1,perfectDrawEnabled:!1});C.offsetX(C.width()/2),g.add(C);let L={id:e.id,logicalId:e.logicalSectionId??e.id,label:e.displayLabel??e.label,outline:e.outline,...e.outlinePath?{outlinePath:e.outlinePath}:{},holes:e.holes??[],centroid:i,labelAnchors:Zr(e.outline,e.holes??[],i),labelArea:Fn(e.outline,e.holes),zone:e.zone,memberIds:r,total:r.length,free:s,baseFill:c,outlineTint:S,outlinePoly:y,blockPoly:x,nameLabel:M,subLabel:C,preferredInk:k,labelScale:w,nameLabelFits:!0,subLabelFits:!0,elevation:d,liftWorld:u,rakeDeg:p.rake,surfaceFocal:r.length?{...this.seatById.get(r[0])?.focalPoint??this.isoCentre}:{...this.chartDoc?.focalPoint??this.isoCentre},frontDistanceWorld:0,rootGroupBg:m,bgZIndex:m.zIndex(),seatZIndex:f.zIndex(),liftGroupBg:b,liftGroupSeat:f,sideFaces:h},R=r.map(T=>this.seatById.get(T)).filter(T=>!!T),v=R.length?R:e.outline;L.frontDistanceWorld=Math.min(...v.map(T=>Math.hypot(T.x-L.surfaceFocal.x,T.y-L.surfaceFocal.y)));for(let T of r)this.seatSection.set(T,L);this.refreshSectionFill(L),this.refreshSectionHeat(L),this.sections.push(L)}refreshSectionHeat(e){Lo(this.sectionLodPaintContext,e)}refreshSectionFill(e){Co(this.sectionLodPaintContext,e)}isSectionClosed(e){return on(this.sectionLodPaintContext,e)}sectionAvailabilityState(e){return sn(this.sectionLodPaintContext,e)}sectionBlockFill(e){return Ze(he(this.canvasBackground),this.sectionAvailabilityState(e))}get sectionLodPaintContext(){return{sections:this.sections,zones:this.zones,sectionHeat:this.sectionHeat,closedSections:this.closedSections,canvasBackground:this.canvasBackground,bgLayer:this.bgLayer,seatLayer:this.seatLayer,stageScaleX:this.stage.scaleX(),stageWidth:this.stage.width(),floorOverview:this.floorOverview,focusedSectionId:this.focusedSectionId,hasFocusDimOverlay:!!this.focusDimOverlay,viewMode:this.viewMode,glideInProgress:this.glideInProgress,reducedMotion:this.reducedMotion,isoT:this.isoT,seatCount:this.seats.length,lodScale:this.lodScale,setLodScale:e=>{this.lodScale=e},worldToScreen:e=>this.worldToScreen(e)}}renderZones(e){if(!e.zones?.length||!this.sections.length)return;let i=new Map;for(let n of this.sections)n.zone&&(i.get(n.zone)??i.set(n.zone,[]).get(n.zone)).push(n);for(let n of e.zones){let r=i.get(n.id);if(!r||!r.length)continue;let o=r[0];for(let u of r)u.centroid.y<o.centroid.y&&(o=u);let s=o.centroid.x,a=o.centroid.y,l=1/0;for(let u of r)for(let m of u.memberIds){let b=this.seatById.get(m),f=b&&this.catPrice.get(b.categoryKey);typeof f=="number"&&f<l&&(l=f)}let c=new Ee.Rect({x:s,y:a,width:1,height:1,offsetX:.5,offsetY:.5,cornerRadius:1,fill:Ji,stroke:n.color??o.outlineTint,strokeWidth:1,opacity:0,listening:!1,perfectDrawEnabled:!1});this.bgLayer.add(c);let d=new Ce.Text({x:s,y:a,text:n.label.toUpperCase(),fontSize:ei,fontStyle:"800",letterSpacing:.5,fontFamily:this.labelFont(),fill:"#f4f6fb",opacity:0,listening:!1,perfectDrawEnabled:!1});d.offsetX(d.width()/2),d.offsetY(d.height()/2),this.bgLayer.add(d);let p=null;isFinite(l)&&(p=new Ce.Text({x:s,y:a,text:oe("map.fromPrice",{price:Yt(l,this.currency)}),fontSize:14,fontStyle:"600",fontFamily:"JetBrains Mono, ui-monospace, monospace",fill:"#cbd5e1",opacity:0,listening:!1,perfectDrawEnabled:!1}),p.offsetX(p.width()/2),this.bgLayer.add(p)),this.zones.push({id:n.id,anchor:{x:s,y:a},back:c,background:Ji,label:d,sub:p})}}screenToWorld(e){let i=this.stage.scaleX(),n={x:(e.x-this.stage.x())/i,y:(e.y-this.stage.y())/i};return this.viewMode==="perspective"&&this.perspectiveBaseInverse?re(this.perspectiveBaseInverse,n):this.isoT===0?n:this.isoInverse(n)}sectionAt(e){if(!this.sections.length)return null;let i=this.screenToWorld(e),n=this.sections.find(r=>{if(this.viewMode==="perspective"&&r.perspectiveAffine)return Y(i,r.outline.map(s=>this.perspectiveLocalPoint(this.projectedSectionPoint(r,s))),r.holes.map(s=>s.map(a=>this.perspectiveLocalPoint(this.projectedSectionPoint(r,a)))));let o=r.liftWorld>0?this.isoLiftLocal(r.liftWorld):{x:0,y:0};return Y({x:i.x-o.x,y:i.y-o.y},r.outline,r.holes)});return n?n.logicalId:null}sectionMembers(e){return[...new Set(this.sections.filter(i=>i.id===e||i.logicalId===e||i.zone===e).flatMap(i=>i.memberIds))]}isSelectable(e){return this.seatInClosedSection(e)?!1:(this.opts.selectableStatuses??["free"]).includes(this.statusById.get(e)??"free")}toggleSeat(e){if(this.selection.has(e)){this.setSelected(e,!1);let i=this.seatById.get(e);i&&this.opts.onDeselect?.(i)}else{if(!this.isSelectable(e))return;if(this.selection.size>=this.opts.maxSelection){this.opts.onSelectionLimit?.(this.opts.maxSelection);return}this.setSelected(e,!0);let i=this.seatById.get(e);i&&this.opts.onSelect?.(i)}this.overlayLayer.batchDraw()}resolveCanvasBackground(){let e=this.theme.background?ji(this.theme.background):null;if(e)return e;if(typeof getComputedStyle=="function"){let i=this.container;for(;i;){let n=ji(getComputedStyle(i).backgroundColor);if(n)return n;i=i.parentElement}}return nn}resolveSelectionColor(){return this.theme.selectionColor?this.theme.selectionColor:ut(this.canvasBackground)?lo:kt}setSelected(e,i,n=!1){let r=this.circleById.get(e);i?this.selection.add(e):(this.selectionFocusId===e&&this.setSelectionFocus(null),this.selection.delete(e)),this.syncSelectionMarker(e),r&&(this.paintSeat(r,e),!n&&!this.cached&&this.seatLayer.batchDraw())}syncSelectionMarker(e){if(this.selectionMarkers.get(e)?.destroy(),this.selectionMarkers.delete(e),!this.selection.has(e)&&!this.ownedHold.has(e))return;let i=this.seatById.get(e);if(!i)return;let n=this.selectionFocusId===e,r=this.boothDims.get(i.rowId),o=this.renderedSeatPoint(i),s=new Le.Group({name:"selection-ring",x:o.x,y:o.y,rotation:r?.rotation??0,listening:!1,perfectDrawEnabled:!1,opacity:this.selectionFocusId&&!n?.2:1});if(this.viewMode==="perspective"){let l=this.perspectiveSeatScale.get(e)??1;s.scale({x:l,y:l})}s.setAttr("seatId",e);let a={stroke:this.effSelection,listening:!1,perfectDrawEnabled:!1,shadowForStrokeEnabled:!1};if(r)if(s.add(new Ee.Rect({...a,width:r.width,height:r.height,offsetX:r.width/2,offsetY:r.height/2,cornerRadius:4,strokeWidth:n?4:3})),n)s.add(new Ee.Rect({...a,width:r.width+10,height:r.height+10,offsetX:(r.width+10)/2,offsetY:(r.height+10)/2,cornerRadius:7,strokeWidth:2,opacity:.55}));else{let l=Math.max(0,r.width/2-14),c=-Math.max(0,r.height/2-14);s.add(new ve.Circle({x:l,y:c,radius:10,fill:this.effSelection,listening:!1})),s.add(new et.Line({x:l,y:c,points:[-4.5,0,-1,3.5,5.5,-4.5],stroke:ut(this.effSelection)?"#0b1220":"#ffffff",strokeWidth:2.4,lineCap:"round",lineJoin:"round",listening:!1}))}else s.add(new ve.Circle({...a,radius:Math.max(1,this.seatR-1.25),strokeWidth:Math.min(2.5,Math.max(1.8,this.seatR*.22))})),n?s.add(new ve.Circle({...a,radius:this.seatR+2,strokeWidth:2,opacity:.55})):s.add(new et.Line({points:[-this.seatR*.52,0,-this.seatR*.12,this.seatR*.4,this.seatR*.6,-this.seatR*.46],stroke:"#ffffff",strokeWidth:Math.max(2.6,this.seatR*.34),lineCap:"round",lineJoin:"round",shadowColor:"#0b1220",shadowBlur:1.5,shadowOpacity:.55,listening:!1}));this.selectionMarkers.set(e,s),this.overlayLayer.add(s)}sectionBounds(e){let i=this.sections.filter(b=>b.id===e||b.logicalId===e),n=i.map(b=>{if(this.viewMode==="perspective"&&b.perspectiveAffine)return U(b.outline.map(g=>this.projectedSectionPoint(b,g)));let f=b.liftWorld>0?this.isoLiftLocal(b.liftWorld):{x:0,y:0},h=b.outline.map(g=>{let S={x:g.x+f.x,y:g.y+f.y};return this.isoT===0?S:this.isoForward(S)});return U(h)});if(!n.length)return null;let r=Math.min(...n.map(b=>b.x)),o=Math.min(...n.map(b=>b.y)),s=Math.max(...n.map(b=>b.x+b.width)),a=Math.max(...n.map(b=>b.y+b.height)),l=new Set(i.flatMap(b=>b.memberIds));for(let b of l){let f=this.seatById.get(b);if(!f)continue;let h=this.renderedSeatPoint(f);r=Math.min(r,h.x-this.seatR),o=Math.min(o,h.y-this.seatR),s=Math.max(s,h.x+this.seatR),a=Math.max(a,h.y+this.seatR)}let c=b=>{[b.x,b.y,b.width,b.height].every(Number.isFinite)&&(r=Math.min(r,b.x),o=Math.min(o,b.y),s=Math.max(s,b.x+b.width),a=Math.max(a,b.y+b.height))},d=b=>{let f={x:b.x+b.width/2,y:b.y+b.height/2};return i.some(h=>Y(f,h.outline,h.holes))};for(let{node:b,backdrop:f}of this.freeTextById.values()){let h=b.getClientRect({relativeTo:this.bgLayer,skipShadow:!0});d(h)&&(c(h),f&&c(f.getClientRect({relativeTo:this.bgLayer,skipShadow:!0})))}for(let{node:b}of this.iconNodeById.values()){let f=b.getClientRect({relativeTo:this.bgLayer,skipShadow:!0});d(f)&&c(f)}let p=new Qe;for(let{node:b}of this.freeTextById.values()){let f=b.getClientRect({relativeTo:this.bgLayer,skipShadow:!0,skipStroke:!0});p.insert({x:f.x-ee,y:f.y-ee,width:f.width+ee*2,height:f.height+ee*2})}for(let b of this.rowLabelPlan){let f=b.focusKeys?.some(y=>y===e||i.some(x=>y===x.id||y===x.logicalId||y===x.zone))??!1,h=new Ce.Text({text:b.text,fontSize:b.fontSize,fontStyle:"700",fontFamily:this.labelFont(),rotation:b.rotation,listening:!1});h.offsetX(h.width()/2),h.offsetY(h.height()/2);let g=this.resolveAutomaticRowLabelPosition(h,b,p),S=this.rowLabelBox(h,g);f&&c(S),p.insert(S),h.destroy()}let u=Math.max(s-r,a-o),m=Math.max(this.seatR*2,Math.min(24,u*.025));return{x:r-m,y:o-m,width:Math.max(1,s-r+m*2),height:Math.max(1,a-o+m*2)}}sectionFrameScale(e){let i=this.sectionBounds(e);if(!i)return this.stage.scaleX();let n=this.stage.width(),r=this.stage.height(),{min:o,max:s}=this.zoomBounds(),a=1.12;if(i.width<=0||i.height<=0)return this.stage.scaleX();let l=Math.min(n/(i.width*a),r/(i.height*a));return j(l,o,s)}handleSeatTap(e){if((this.stacked||this.floorOverview)&&this.opts.onDeckTap){let i=this.objectFloor.get(this.seatById.get(e)?.rowId??"");if(i){this.opts.onDeckTap(i);return}}if(this.effScale()<ue&&this.sections.length){let i=this.seatSection.get(e);if(i){let n=this.focusedSectionId===i.logicalId,r=this.sectionFrameScale(i.logicalId)>this.stage.scaleX()*1.02;if(!n&&r){this.opts.onSectionTap?this.opts.onSectionTap(i.logicalId):this.focusSection(i.logicalId);return}}}this.toggleSeat(e)}nearestSeatToScreen(e,i){let n=null,r=1/0,o=this.stage.scaleX()||1;for(let s of this.seats){if(!this.selection.has(s.id)&&!this.isSelectable(s.id))continue;let a=this.worldToScreen(s),l=this.viewMode==="perspective"?this.perspectiveSeatScale.get(s.id)??1:1,c=this.seatR*o*l+i,d=Math.hypot(a.x-e.x,a.y-e.y);d<=c&&d<r&&(r=d,n=s.id)}return n}wireInteraction(){this.seatLayer.on("click tap",e=>{if(this.moved>Re||this.isGhostClick(e))return;let i=cn(e.target);i&&this.handleSeatTap(i)}),this.seatLayer.on("mouseover",e=>{let i=cn(e.target);if(!i)return;let n=this.seatById.get(i);if(!n)return;this.hoveredId=i,this.hoverRing.position(this.renderedSeatPoint(n));let r=this.viewMode==="perspective"?this.perspectiveSeatScale.get(i)??1:1;this.hoverRing.scale({x:r,y:r}),this.hoverRing.visible(!0),this.overlayLayer.batchDraw(),this.container.style.cursor="pointer",this.opts.onHover?.(n)}),this.seatLayer.on("mouseout",()=>{this.hoveredId=null,this.hoverRing.visible(!1),this.overlayLayer.batchDraw(),this.container.style.cursor="default",this.opts.onHover?.(null)}),this.stage.on("wheel",e=>{e.evt.preventDefault(),this.releaseSectionFocusDim();let i=this.container.getBoundingClientRect(),n={x:e.evt.clientX-i.left,y:e.evt.clientY-i.top},r=Math.exp(-e.evt.deltaY*.002);this.zoomAbout(this.stage.scaleX()*j(r,.5,2),n)}),this.stage.on("click tap",e=>{if(this.moved>Re||this.isGhostClick(e))return;let i=this.stage.getPointerPosition();if(!i)return;if(!this.cached){if(cn(e.target))return;let r=this.nearestSeatToScreen(i,$t);r&&this.handleSeatTap(r);return}if((this.stacked||this.floorOverview)&&this.opts.onDeckTap){let r=this.floorOverview?this.sectionAt(i):null,o=(r?this.objectFloor.get(r):null)??this.deckFloorAt();if(o){this.opts.onDeckTap(o);return}}if(this.sections.length){let r=this.sectionAt(i);if(r){this.opts.onSectionTap?this.opts.onSectionTap(r):this.focusRegion(r);return}}let n=Math.max(Pe*1.2,this.stage.scaleX()*2.5);this.zoomAbout(n,i)})}deckFloorAt(){if(!this.objectFloor.size)return null;let e=this.stage.getPointerPosition();if(!e)return null;let i=this.screenToWorld(e),n=null,r=1/0;for(let o of this.seats){let s=this.renderedSeatPoint(o),a=s.x-i.x,l=s.y-i.y,c=a*a+l*l;c<r&&(r=c,n=o.rowId)}return n?this.objectFloor.get(n)??null:null}zoomBounds(){let e=.5*this.fitScale;return this.zones.length&&(e=Math.min(e,$e*.9)),{min:e,max:Math.max(10*this.fitScale,4)}}zoomAbout(e,i){let{min:n,max:r}=this.zoomBounds(),o=j(e,n,r),s=this.stage.scaleX();if(o===s)return;let a=(i.x-this.stage.x())/s,l=(i.y-this.stage.y())/s;this.stage.scale({x:o,y:o}),this.stage.position({x:i.x-a*o,y:i.y-l*o}),this.afterViewChange(),this.stage.batchDraw()}zoomToBounds(e,i){let n=this.stage.width(),r=this.stage.height(),{min:o,max:s}=this.zoomBounds(),a=1.12,l=Math.min(n/(e.width*a),r/(e.height*a)),c=j(Math.max(l,i??o),o,s);this.stage.scale({x:c,y:c}),this.stage.position({x:n/2-(e.x+e.width/2)*c,y:r/2-(e.y+e.height/2)*c}),this.afterViewChange(),this.stage.batchDraw()}focusRegion(e,i){let n=typeof e=="string"?this.sectionBounds(e):e;if(!n)return;if(this.cancelGlide(),i?.animate===!1||this.reducedMotion){this.zoomToBounds(n,i?.minScale);return}let r=this.stage.width(),o=this.stage.height(),{min:s,max:a}=this.zoomBounds(),l=1.12,c=Math.min(r/(n.width*l),o/(n.height*l)),d=j(Math.max(c,i?.minScale??s),s,a),p=r/2-(n.x+n.width/2)*d,u=o/2-(n.y+n.height/2)*d,m=this.stage.scaleX(),b=this.stage.x(),f=this.stage.y();if(Math.abs(d-m)<1e-4&&Math.abs(p-b)<.5&&Math.abs(u-f)<.5){this.afterViewChange();return}let h=performance.now(),g=Math.max(180,Math.min(1200,i?.durationMs??Qt));this.glideInProgress=!0;let S=y=>{if(this.destroyed){this.glideRaf=0,this.glideInProgress=!1;return}let x=Math.min(1,(y-h)/g),I=x<.5?4*x*x*x:1-Math.pow(-2*x+2,3)/2,k=m+(d-m)*I;this.stage.scale({x:k,y:k}),this.stage.position({x:b+(p-b)*I,y:f+(u-f)*I}),this.updateSeatGroupVisibility(),this.updateLOD(),this.scheduleViewChange(),this.stage.batchDraw(),x<1?this.glideRaf=requestAnimationFrame(S):(this.glideRaf=0,this.glideInProgress=!1,this.afterViewChange())};this.glideRaf=requestAnimationFrame(S)}cancelGlide(){this.glideRaf&&(cancelAnimationFrame(this.glideRaf),this.glideRaf=0),this.glideInProgress=!1}getRung(){let e=this.effScale();return e>=se?"seats":this.zones.length&&e<$e?"zones":"sections"}get renderedQualityContext(){return{stage:this.stage,overlayLayer:this.overlayLayer,labelGroup:this.labelGroup,viewMode:this.viewMode,cached:this.cached,effScale:()=>this.effScale(),getRung:()=>this.getRung(),worldToScreen:e=>this.worldToScreen(e),isoLiftLocal:e=>this.isoLiftLocal(e),seats:this.seats,sections:this.sections,zones:this.zones,seatSection:this.seatSection,statusById:this.statusById,selection:this.selection,circleById:this.circleById,seatLabelById:this.seatLabelById,boothLabelById:this.boothLabelById,accessGlyphById:this.accessGlyphById,freeTextById:this.freeTextById,gaById:this.gaById,perspectiveSeatProjected:this.perspectiveSeatProjected,perspectiveSeatScale:this.perspectiveSeatScale,seatR:this.seatR,canvasBackground:this.canvasBackground,effSelection:this.effSelection,categoryFilter:this.categoryFilter,focusedSectionId:this.focusedSectionId,focusBackdrop:this.focusBackdrop,isSelectable:e=>this.isSelectable(e),seatViewportCulled:e=>this.seatViewportCulled(e),focusedSeatOpacity:(e,i)=>this.focusedSeatOpacity(e,i),accessGlyphFilterEmphasized:e=>this.accessGlyphFilterEmphasized(e),seatLabelScale:e=>this.seatLabelScale(e),seatLabelInk:(e,i)=>this.seatLabelInk(e,i),seatPreferredLabelInk:e=>this.seatPreferredLabelInk(e)}}getRenderedQualityEvidence(){return to(this.renderedQualityContext)}setRung(e){if(e==="zones"){this.cancelGlide(),this.zoomToFit();return}let i=e==="sections"?(Te+se)/2:Math.max(this.seatLabelTargetScale()*1.05,Fr,se*1.3),n=this.stage.width(),r=this.stage.height(),o=this.getVisibleWorldRect(),s={x:o.x+o.width/2,y:o.y+o.height/2},a=s.x,l=s.y;if(e==="sections"&&this.sections.length>0){let u=this.sections.map(h=>{let g=U(h.outline);return{x:g.x+g.width/2,y:g.y+g.height/2}}),m=n/(i*2),b=r/(i*2);if(!u.some(h=>Math.abs(h.x-s.x)<=m&&Math.abs(h.y-s.y)<=b)){let h=u.reduce((g,S)=>{let y=(S.x-s.x)**2+(S.y-s.y)**2;return y<g.distance?{point:S,distance:y}:g},{point:u[0],distance:1/0});a=h.point.x,l=h.point.y}}let c=e==="seats"?this.seats.filter(u=>u.kind!=="booth"):[];if(c.length>0){let u=c[0],m=1/0;for(let b of c){let f=b.x-s.x,h=b.y-s.y,g=f*f+h*h;g<m&&(u=b,m=g)}a=u.x,l=u.y}let d=n/(i*1.12),p=r/(i*1.12);this.focusRegion({x:a-d/2,y:l-p/2,width:d,height:p})}seatLabelTargetScale(){let e=Ve,i=new Ce.Text({fontSize:ye,fontStyle:"600",fontFamily:this.labelFont(),listening:!1}),n=this.seatR*2-3;for(let r of this.seats){if(r.kind==="booth"){e=Math.min(e,Ve);continue}let o=ye*this.seatLabelScale(r);i.fontSize(o),i.text(Ht(r.displayLabel??r.label));let s=i.width()>n?Math.max(bt,o*n/i.width()):o;e=Math.min(e,s)}return i.destroy(),Q/Math.max(bt,e)}afterViewChange(){this.updateSeatGroupVisibility(),this.updateLOD(),this.updateFreeTextVisibility(),this.updateLabels(),this.scheduleViewChange()}scheduleViewChange(){this.exportMode||this.viewChangeRaf||(this.viewChangeRaf=requestAnimationFrame(()=>{this.viewChangeRaf=0,this.opts.onViewChange?.()}))}sizeLabel(e,i,n){e.fontSize(Math.max(1,i)),e.offsetX(e.width()/2),e.offsetY(e.height()/2),e.y(n)}updateLOD(){let e=this.exportMode?Math.max(this.effScale(),qe+.01,ue):this.effScale(),i=Math.max(e,1e-4);for(let[o,s]of this.primaryFocalLabels)this.sizeLabel(o,s/i,o.y());this.hasSections?Mo(this.sectionLodPaintContext,e):this.primaryFocalLabels.size&&this.bgLayer.batchDraw(),this.paintGAStateForView(),this.updateAccessGlyphs(e);let n=!this.exportMode&&e<se;if(this.viewMode==="perspective"&&this.hasSections&&this.seats.length>2500&&n){this.seatLayer.listening(!1);return}n&&!this.cached?this.cacheSeatLayer():!n&&(this.cached||!this.seatLayer.listening())&&(this.cached&&this.releaseSeatLayerBitmap(),this.seatLayer.listening(!this.exportMode),this.cached=!1,this.seatLayer.batchDraw())}rebuildSeatCache(){this.updateSeatGroupVisibility();let e=j(this.stage.scaleX()*this.dpr,.15,2);this.seatLayer.clearCache(),this.seatLayer.cache({pixelRatio:e}),this.seatLayer.listening(!1),this.cached=!0}cacheSeatLayer(){this.rebuildSeatCache(),this.seatLayer.batchDraw()}releaseSeatLayerBitmap(){let e=this.seatLayer,i=e._cache.get("canvas");i&&(Tt.Konva.Util.releaseCanvas(i.scene._canvas,i.filter._canvas,i.hit._canvas),e._cache.delete("canvas"))}forceDraw(){this.recacheTimer&&(clearTimeout(this.recacheTimer),this.recacheTimer=null,this.effScale()<se?this.rebuildSeatCache():this.cached&&(this.releaseSeatLayerBitmap(),this.seatLayer.listening(!0),this.cached=!1)),this.bgLayer.draw(),this.seatLayer.draw(),this.overlayLayer.draw()}async ready(){let e=this.assetGeneration,i=typeof document<"u"&&"fonts"in document?document.fonts:null;if(await Promise.all([...this.assetPromises.slice(),...i?[i.ready.then(()=>{}),i.load("700 24px Inter").then(()=>{}),i.load('600 12px "JetBrains Mono"').then(()=>{})]:[]]),e!==this.assetGeneration)throw new Error("The chart changed while its export assets were loading.");if(this.assetErrors.length)throw new Error(`Export stopped because ${this.assetErrors.join(" ")}`);this.exportMode&&(this.fitExportContent(),this.forceDraw())}exportSceneBounds(){let e=[this.bgLayer,this.seatLayer,this.overlayLayer].map(s=>s.getClientRect({relativeTo:this.stage})).filter(s=>s.width>0&&s.height>0);if(!e.length)return this.bounds;let i=Math.min(...e.map(s=>s.x)),n=Math.min(...e.map(s=>s.y)),r=Math.max(...e.map(s=>s.x+s.width)),o=Math.max(...e.map(s=>s.y+s.height));return{x:i,y:n,width:Math.max(1,r-i),height:Math.max(1,o-n)}}fitExportContent(){if(!this.exportMode)return;let e=this.stage.width(),i=this.stage.height(),n=Math.max(12,Math.min(36,Math.min(e,i)*.025)),r=()=>{let o=this.exportSceneBounds(),s=Math.max(1,e-n*2),a=Math.max(1,i-n*2),l=Math.min(s/o.width,a/o.height)||1;this.fitScale=l,this.stage.scale({x:l,y:l}),this.stage.position({x:(e-o.width*l)/2-o.x*l,y:(i-o.height*l)/2-o.y*l}),this.afterViewChange()};r(),r()}captureCanvas(){if(!this.exportMode)throw new Error("captureCanvas() is available only on a renderer created with exportMode.");this.forceDraw();let e;try{e=this.stage.toCanvas({pixelRatio:1,imageSmoothingEnabled:!0})}catch(r){let o=r instanceof Error?r.message:String(r);throw new Error(`The chart canvas could not be captured. A buyer-visible image may block export. ${o}`)}let i=document.createElement("canvas");i.width=this.stage.width(),i.height=this.stage.height();let n=i.getContext("2d");if(!n)throw new Error("Canvas 2D is unavailable; this browser cannot create an export.");n.fillStyle=this.canvasBackground,n.fillRect(0,0,i.width,i.height);try{n.drawImage(e,0,0)}finally{e.width=1,e.height=1}return i}updateFreeTextVisibility(){let e=this.exportMode?Math.max(this.effScale(),ue):this.effScale();for(let{objectId:i,node:n,backdrop:r,categoryKey:o,kind:s}of this.freeTextById.values()){let a=o!=null&&(s==="ga-label"||s==="ga-capacity")&&this.gaCategoryDimmed(o),l=i!=null&&(s==="ga-label"||s==="ga-capacity")&&this.gaById.get(i)?.sectionId!=null&&e<se,c=s==="free-text"&&this.nodeBelongsToFocusedSection(n),d=!a&&!l&&(c||Ie(n.fontSize(),e));n.visible(d),r?.visible(d)}for(let{node:i,fontSize:n}of this.iconNodeById.values())i.visible(this.nodeBelongsToFocusedSection(i)||Ie(n,e))}nodeBelongsToFocusedSection(e){let i=this.focusedSectionId;if(!i)return!1;let n=this.sections.filter(s=>s.id===i||s.logicalId===i||s.zone===i);if(!n.length)return!1;let r=e.getClientRect({relativeTo:this.bgLayer,skipShadow:!0}),o={x:r.x+r.width/2,y:r.y+r.height/2};return n.some(s=>Y(o,s.outline,s.holes))}buildRowLabelPlan(e){this.rowLabelPlan=Io(e,{theme:this.theme,seats:this.seats,seatSection:this.seatSection,seatR:this.seatR,objectFilteredOut:i=>this.objectFilteredOut(i)})}rowLabelBox(e,i,n=ee){return rn(e,i,n)}resolveAutomaticRowLabelPosition(e,i,n){return To(e,i,n,this.seatIndex)}objectFilteredOut(e){let i=e.categoryKey;return i?!!(this.categoryHighlight&&i!==this.categoryHighlight||this.categoryFilter&&!this.categoryFilter.has(i)):!1}updateLabels(){Eo(this.viewportLabelContext)}get viewportLabelContext(){return{exportMode:this.exportMode,effScale:()=>this.effScale(),boothLabelById:this.boothLabelById,circleById:this.circleById,focusedSeatOpacity:(e,i)=>this.focusedSeatOpacity(e,i),labelGroup:this.labelGroup,labelLiftGroups:this.labelLiftGroups,seatLabelById:this.seatLabelById,visibleSeatCandidates:()=>this.visibleSeatCandidates(),worldToScreen:e=>this.worldToScreen(e),stage:this.stage,accessGlyphById:this.accessGlyphById,accessGlyphShouldShow:e=>this.accessGlyphShouldShow(e),statusById:this.statusById,renderedSeatPoint:e=>this.renderedSeatPoint(e),viewMode:this.viewMode,perspectiveSeatScale:this.perspectiveSeatScale,ownedHold:this.ownedHold,opts:this.opts,seatLabelContainer:e=>this.seatLabelContainer(e),seatLabelScale:e=>this.seatLabelScale(e),labelFont:()=>this.labelFont(),seatLabelInk:(e,i)=>this.seatLabelInk(e,i),seatPreferredLabelInk:e=>this.seatPreferredLabelInk(e),seatR:this.seatR,freeTextById:this.freeTextById,bgLayer:this.bgLayer,rowLabelPlan:this.rowLabelPlan,focusedSectionId:this.focusedSectionId,resolveAutomaticRowLabelPosition:(e,i,n)=>this.resolveAutomaticRowLabelPosition(e,i,n),rowLabelBox:(e,i)=>this.rowLabelBox(e,i),isoT:this.isoT,applyUprightLabels:()=>this.applyUprightLabels(),overlayLayer:this.overlayLayer}}handleResize(){let e=this.container.clientWidth||1,i=this.container.clientHeight||1;e===this.stage.width()&&i===this.stage.height()||(this.stage.size({width:e,height:i}),this.refitCurrentView())}startFpsLoop(){let e=i=>{this.lastFpsAt||(this.lastFpsAt=i),this.frames++;let n=i-this.lastFpsAt;n>=1e3&&(this.opts.onFps?.(Math.round(this.frames*1e3/n)),this.frames=0,this.lastFpsAt=i),this.rafId=requestAnimationFrame(e)};this.rafId=requestAnimationFrame(e)}};Lt.ZOOM_STEP=1.4;var di=Lt;function dn(t,e){return new di(t,e)}function tt(t){let e=Number(t.slice(t.lastIndexOf(":")+1));return Number.isFinite(e)?e:-1}function un(t,e,i){let n=new Map;for(let s of t){if(s.kind==="booth")continue;let a=n.get(s.rowId);a?a.push(s):n.set(s.rowId,[s])}let r=s=>i.has(s.id)||e(s.id)!=="free",o=[];for(let s of n.values())if(!(s.length<3)){s.sort((a,l)=>tt(a.id)-tt(l.id));for(let a=1;a<s.length-1;a++){let l=s[a];if(r(l))continue;let c=s[a-1],d=s[a+1];tt(l.id)-tt(c.id)!==1||tt(d.id)-tt(l.id)!==1||!r(c)||!r(d)||!i.has(c.id)&&!i.has(d.id)||o.push(l)}}return o}function Uo(t,e={}){let{baseMs:i=1e3,factor:n=2,maxMs:r=1/0,jitter:o=0,random:s=Math.random}=e,a=Math.min(i*n**Math.max(0,t),r);if(o<=0)return a;let l=Math.min(1,o);return a*(1-l+l*s())}function hn(t,e){if(Number.isInteger(t.logicalSeatIndex))return t.logicalSeatIndex;let i=t.id.lastIndexOf(":");if(i<0)return e;let n=Number(t.id.slice(i+1));return Number.isFinite(n)?n:e}function Xo(t,e){let i=t.x-e.x,n=t.y-e.y;return i*i+n*n}function nl(t){let e=0,i=0;for(let n of t)e+=n.x,i+=n.y;return{x:e/t.length,y:i/t.length}}function rl(t,e){return t.find(i=>i.focalPoint)?.focalPoint??e}function pn(t){return t.commercial?.premium===!0}function Yo(t,e,i){let n=Math.floor(i.qty);if(!Number.isFinite(n)||n<=0)return{labels:[],reason:"sold_out"};let{categoryKey:r,zoneId:o,focal:s,preferPremium:a}=i,l=new Map,c=[];if(t.forEach((m,b)=>{let f=e.has(m.label)&&(!r||m.categoryKey===r)&&(!o||m.zoneId===o),h=m.logicalRowId??m.rowId,g=l.get(h);g||(g=[],l.set(h,g)),g.push({seat:m,index:hn(m,b),elig:f}),f&&c.push(m)}),c.length===0)return{labels:[],reason:"sold_out"};let d=null,p=m=>{if(!d)return!0;if(a&&m.nonPremium!==d.nonPremium)return m.nonPremium<d.nonPremium;if(m.orphan!==d.orphan)return m.orphan<d.orphan;if(m.d2!==d.d2)return m.d2<d.d2;let b=m.rowId.localeCompare(d.rowId);return b!==0?b<0:m.startIndex<d.startIndex};for(let[m,b]of l){let f=[...b].sort((g,S)=>g.index-S.index),h=0;for(;h<f.length;){if(!f[h].elig){h++;continue}let g=h;for(;g<f.length&&f[g].elig&&(g===h||f[g].index===f[g-1].index+1);)g++;let S=g-h;for(let y=0;y+n<=S;y++){let x=y,I=S-(y+n),k=x===1||I===1?1:0,w=f.slice(h+y,h+y+n).map(C=>C.seat),M={labels:w.map(C=>C.label),seats:w,rowId:m,startIndex:f[h+y].index,orphan:k,nonPremium:a?w.reduce((C,L)=>C+(pn(L)?0:1),0):0,d2:Xo(nl(w),rl(w,s))};p(M)&&(d=M)}h=g}}return d?{labels:d.labels}:c.length<n?{labels:[],reason:"not_enough_together"}:{labels:c.map((m,b)=>({seat:m,i:b,d2:Xo(m,m.focalPoint??s)})).sort((m,b)=>{if(a){let h=pn(m.seat)?0:1,g=pn(b.seat)?0:1;if(h!==g)return h-g}if(m.d2!==b.d2)return m.d2-b.d2;let f=(m.seat.logicalRowId??m.seat.rowId).localeCompare(b.seat.logicalRowId??b.seat.rowId);return f!==0?f:hn(m.seat,m.i)-hn(b.seat,b.i)}).slice(0,n).map(m=>m.seat.label)}}function ui(t){return{code:"ticket_option_not_applicable",labels:t,message:"That ticket choice is not available for the selected seat."}}function fn(t,e){let i=t.applicability;return i?!(i.seatLabels?.length&&!i.seatLabels.includes(e.label)||i.accessibility?.length&&!i.accessibility.some(n=>e.accessibility?.includes(n))):!0}function $o(t,e){return(t.categories.find(i=>i.key===e.categoryKey)?.tiers??[]).filter(i=>fn(i,e))}function it(t,e,i){let n=t.categories.find(o=>o.key===e.categoryKey)?.tiers;if(!n?.length)return{kind:"none"};let r=i==null?n.find(o=>fn(o,e)):n.find(o=>o.id===i&&fn(o,e));return r?{kind:"resolved",tier:r}:{kind:"invalid"}}function ol(t,e){return(t.logicalRowId??t.rowId)===(e.logicalRowId??e.rowId)}function qo(t){if(Number.isInteger(t.logicalSeatIndex))return t.logicalSeatIndex;let e=t.id.slice(t.id.lastIndexOf(":")+1),i=Number(e);return Number.isInteger(i)?i:void 0}function sl(t,e){if(!ol(t,e))return!1;let i=qo(t),n=qo(e);return i!=null&&n!=null&&Math.abs(i-n)===1}function al(t,e){if(!e.length)return null;let i=new Map(be(t,{resolveEyeHeights:!1}).map(s=>[s.label,s])),n=e.flatMap(s=>{let a=i.get(s.label);return a?[{selection:s,seat:a}]:[]}),r=n.map(({seat:s})=>s).filter(s=>s.accessibility?.includes("wheelchair")),o=[];for(let{selection:s,seat:a}of n){let l=it(t,a,s.tierId),c=l.kind==="resolved"?l.tier:void 0;(a.accessibility?.includes("companion")||c?.restriction==="companion")&&!r.some(p=>p.id!==a.id&&sl(a,p))&&o.push(a.label)}return o.length?{code:"companion_pair_required",labels:o,message:"Select the adjacent wheelchair place with each companion ticket."}:null}function Zo(t,e){if(!e.length)return null;let i=new Map(be(t,{resolveEyeHeights:!1}).map(s=>[s.label,s])),n=new Set(t.categories.filter(s=>s.notForSale).map(s=>s.key)),r=[],o=[];for(let s of e){let a=i.get(s.label);if(!a)continue;if(n.has(a.categoryKey)){r.push(a.label);continue}it(t,a,s.tierId).kind==="invalid"&&o.push(a.label)}return r.length?{code:"not_for_sale",labels:r,message:"These seats are not for sale."}:o.length?ui(o):al(t,e)}var Ct=class extends Error{constructor(i,n){super(n);this.objectId=i;this.name="GroupedTableProjectionError"}};function ll(t){let e=t.minOccupancy,i=t.maxOccupancy;if(!Number.isInteger(e)||!Number.isInteger(i)||e<1||i<e||i>t.seatCount)throw new Ct(t.id,`Table "${t.label}" has invalid variable-occupancy bounds`);return{min:e,max:i}}function Qo(t,e){if(e!==2)return[];let i=[];for(let n of ae(t)){if(n.type!=="table"||!n.bookAsWhole&&!n.variableOccupancy)continue;if(n.bookAsWhole&&n.variableOccupancy)throw new Ct(n.id,`Table "${n.label}" cannot be whole-table and variable-occupancy inventory`);if(!Number.isInteger(n.seatCount)||n.seatCount<1||!n.label.trim())throw new Ct(n.id,"Grouped tables require a label and at least one chair");let r=n.variableOccupancy?"variable":"whole",o=r==="variable"?ll(n):{min:n.seatCount,max:n.seatCount};i.push({objectId:n.id,label:n.label,...n.displayLabel?{displayLabel:n.displayLabel}:{},...n.displayType?{displayType:n.displayType}:{},categoryKey:n.categoryKey,mode:r,capacity:n.seatCount,minOccupancy:o.min,maxOccupancy:o.max,chairs:ze(n)})}return i}var ke=class extends Error{constructor(i){super(i.message);this.status=422;this.name="PickerSelectionError",this.reason=i.code,this.labels=i.labels}};function Jo(t){if(t!=null&&(!Number.isInteger(t)||t<1))throw new Error("picker: `numberOfPlacesToSelect` must be a positive integer");return t??null}function es(t,e,i,n){if(i!=null&&!Array.isArray(i))throw new TypeError("picker: `selectionValidators` must be an array");let r=[],o=0,s=!1,a=!1;for(let c of i??[])if(c?.type==="minimumSelectedPlaces"){if(!Number.isInteger(c.minimum)||Number(c.minimum)<1)throw new TypeError("picker: `minimumSelectedPlaces.minimum` must be a positive integer");o=Math.max(o,Number(c.minimum))}else if(c?.type==="consecutiveSeats")s=!0;else if(c?.type==="noOrphanSeats")a=!0;else throw new TypeError(`picker: unsupported selection validator "${String(c?.type??"")}"`);if(o&&r.push({type:"minimumSelectedPlaces",minimum:o}),s&&r.push({type:"consecutiveSeats"}),a&&r.push({type:"noOrphanSeats"}),t!=null&&o>t)throw new Error("picker: `minimumSelectedPlaces.minimum` cannot exceed `numberOfPlacesToSelect`");let l=Math.max(0,Math.floor(e??t??Math.max(n,o)));if(t!=null&&l<t)throw new Error("picker: `maxSelection` cannot be lower than `numberOfPlacesToSelect`");if(e!=null&&l<o)throw new Error("picker: `maxSelection` cannot be lower than `minimumSelectedPlaces.minimum`");return{validators:r,maxSelection:t??l}}function cl(t){let e=Number(t.slice(t.lastIndexOf(":")+1));return Number.isInteger(e)?e:-1}function dl(t){if(t.length<=1)return!1;let e=t[0]?.objectId,i=t[0]?.categoryKey;if(!e||t.some(r=>r.objectId!==e||r.categoryKey!==i))return!0;let n=t.map(r=>cl(r.id)).sort((r,o)=>r-o);return n.some((r,o)=>r<0||o>0&&r!==n[o-1]+1)}function ts(t,e,i,n,r){let o=n.find(l=>l.type==="minimumSelectedPlaces")?.minimum??0,s=i??o,a=[];return i!=null&&e!==i&&a.push("numberOfPlacesToSelect"),o&&e<o&&a.push("minimumSelectedPlaces"),n.some(l=>l.type==="consecutiveSeats")&&dl(t)&&a.push("consecutiveSeats"),n.some(l=>l.type==="noOrphanSeats")&&r()&&a.push("noOrphanSeats"),{isValid:a.length===0,count:e,required:s,remaining:Math.max(0,s-e),seats:t,violations:a}}var ul=10,hl=15e3,is=["background","rowLabelColor","textColor","selectionColor"];function pl(t,e){return!t||!e?!t&&!e:is.every(i=>t[i]===e[i])}function hi(t){let e=t??{};return{status:e.status,conflicts:e.conflicts,reason:e.reason}}function mn(t){return t==="blocked"?"not_for_sale":t==="held"||t==="booked"||t==="free"||t==="not_for_sale"?t:"free"}var bn=class{constructor(e){this.selectableSeatIds=null;this.lastSelectionValidity=null;this.renderer=null;this._doc=null;this.hidden=new Set;this.mapTheme=null;this.closedSections=new Set;this.labelToId=new Map;this.labelToSeat=new Map;this.seatTiers=new Map;this.seatById=new Map;this.seatContext=new Map;this.allIds=[];this.groupedTablesByObject=new Map;this.groupedTablesByLabel=new Map;this.groupedTableBySeatId=new Map;this.tableQuantities=new Map;this.confirmedVariableTables=new Set;this.groupedSelectionOverhead=0;this.ws=null;this.realtime=null;this.reconnectTimer=null;this.attempt=0;this.closed=!1;this.onVisibilityChange=null;this.hold_=null;this.liveStatuses=new Map;this.liveDefault="free";this.currency="USD";this.expiryTimer=null;this.hintShown=!1;this.opts=e,this.api=e.transport,this.key=e.eventKey,this.numberOfPlacesToSelect=Jo(e.numberOfPlacesToSelect);let i=es(this.numberOfPlacesToSelect,e.maxSelection,e.selectionValidators,ul);this.selectionValidators=i.validators,this.maxSelection=i.maxSelection,this.selectableObjectRefs=e.selectableObjects==null?null:[...new Set(e.selectableObjects.filter(n=>typeof n=="string"&&!!n))],this.mapTheme=e.mapTheme??null}get doc(){return this._doc}visibleDoc(){if(!this._doc)return{objects:[]};let e=Gi(this._doc,this.hidden);if(!this.mapTheme)return e;let i={...e.theme??{}};for(let n of is){let r=this.mapTheme[n];r&&(i[n]=r)}return{...e,theme:i}}setMapTheme(e){if(pl(this.mapTheme,e??null))return!1;this.mapTheme=e??null;let i=this.renderer;if(!i)return!0;let n=i.getSelection().map(s=>s.id),r=this.getActiveFloorId(),o=i.isFloorOverview?.()??!1;return i.setChart(this.visibleDoc(),r?{floorId:r}:void 0),o&&i.setFloorOverview?.(!0),this.opts.colorblindSafe&&i.setColorblindSafe?.(!0),this.closedSections.size&&i.setClosedSections?.([...this.closedSections]),this.applySeatsMap(Object.fromEntries(this.liveStatuses),this.liveDefault),n.length&&i.select?.(n),!0}syncHidden(e){let i=e.filter(r=>typeof r=="string");if(i.length===this.hidden.size&&i.every(r=>this.hidden.has(r)))return!1;this.hidden=new Set(i);let n=this.renderer?.isFloorOverview?.()??!1;return this.renderer?.setChart(this.visibleDoc()),n&&this.renderer?.setFloorOverview?.(!0),!0}syncClosed(e){let i=(e??[]).filter(n=>typeof n=="string");return i.length===this.closedSections.size&&i.every(n=>this.closedSections.has(n))?!1:(this.closedSections=new Set(i),this.renderer?.setClosedSections?.(i),!0)}isSectionClosed(e){return this.closedSections.has(e)}currentHold(){return this.hold_}getRenderer(){return this.renderer}seatByLabel(e){return this.labelToSeat.get(e)}idForLabel(e){return this.labelToId.get(e)}idsForLabel(e){let i=this.groupedTablesByLabel.get(e);if(i)return i.chairs.map(r=>r.id);let n=this.labelToId.get(e);return n?[n]:[]}idsForLabels(e){return[...new Set([...e].flatMap(i=>this.idsForLabel(i)))]}tableSelection(e){let i=this.groupedTableBySeatId.get(e)??this.groupedTablesByLabel.get(e);return i?this.toTableSeat(i):null}lineItemDisplay(e){if(e.objectType==="ga"){let r=this.visibleDoc(),o=lt(r).find(s=>s.id===e.objectId);return{...o?.displayLabel?{displayLabel:o.displayLabel}:{},...o?.displayType?{displayType:o.displayType}:{}}}if(e.objectType==="table"){let r=this.groupedTablesByLabel.get(e.label);return{...r?.displayLabel&&r.displayLabel!==r.label?{displayLabel:r.displayLabel}:{},...r?.displayType?{displayType:r.displayType}:{}}}let i=this.labelToSeat.get(e.label),n=i?this.seatContext.get(i.id):void 0;return{...i?.displayLabel?{displayLabel:i.displayLabel}:{},...n?.displayType?{displayType:n.displayType}:{}}}async render(e){if(this.renderer)return null;let i=performance.now(),n={},r=k=>Math.round((performance.now()-k)*100)/100;this.closed=!1;let o,s=performance.now();try{o=await this.api.chart(this.key)}catch(k){return this.emitError(k),null}if(n.loadChart=r(s),this.closed)return null;this._doc=o.doc;let a=performance.now();try{let k=Qo(o.doc,o.event.inventoryModelVersion===2?2:1);this.groupedTablesByObject=new Map(k.map(w=>[w.objectId,w])),this.groupedTablesByLabel=new Map(k.map(w=>[w.label,w])),this.groupedTableBySeatId=new Map(k.flatMap(w=>w.chairs.map(M=>[M.id,w]))),this.tableQuantities=new Map(k.map(w=>[w.label,w.mode==="whole"?w.capacity:w.minOccupancy])),this.confirmedVariableTables=new Set,this.groupedSelectionOverhead=k.reduce((w,M)=>w+Math.max(0,M.chairs.length-1),0)}catch(k){return this.emitError(k),null}this.labelToId=new Map,this.labelToSeat=new Map,this.seatById=new Map,this.seatContext=new Map,this.allIds=[];let l=new Map(ae(o.doc).map(k=>[k.id,k])),c=ct(o.doc),d=new Map([...c.sections,...c.ungrouped?[c.ungrouped]:[]].map(k=>[k.id,k.label]));for(let k of be(o.doc)){this.labelToId.set(k.label,k.id),this.labelToSeat.set(k.label,k),this.seatById.set(k.id,k),this.allIds.push(k.id);let w=l.get(k.rowId),M=w&&"label"in w&&typeof w.label=="string"?w.label:void 0,C=w?.type==="row"?w.segmentedRow:void 0,L=C?.displayLabel??(w&&"displayLabel"in w&&typeof w.displayLabel=="string"&&w.displayLabel?w.displayLabel:M),R=this.groupedTablesByObject.get(k.rowId),v=w?.type==="table"?"table":w?.type==="booth"?"booth":"seat",T=L,E=C?.displayType?.trim()||(w&&"displayType"in w&&typeof w.displayType=="string"&&w.displayType.trim()?w.displayType.trim():void 0),A=k.displayLabel??k.label,F=A.split("-"),H=R||k.kind==="booth"?void 0:L&&A.startsWith(`${L}-`)?A.slice(L.length+1):F[F.length-1]??A;this.seatContext.set(k.id,{objectId:k.rowId,objectType:v,sectionLabel:d.get(c.objectToSection.get(k.rowId)??""),rowLabel:T,seatNumber:H,...E?{displayType:E,rowType:E}:{}})}for(let k of this.groupedTablesByLabel.values()){let w=k.chairs[0];w&&(this.labelToId.set(k.label,w.id),this.labelToSeat.set(k.label,w))}n.normalizeBuyerModel=r(a);let p=o.event.currency??this.opts.currency;this.currency=p??"USD";let u=performance.now(),m=dn(e,{maxSelection:this.rendererSelectionCap(),confirmSelection:this.opts.confirmSelection,portraitFitCrop:!0,currency:p,onSelect:k=>{this.handleRendererSelect(k)},onDeselect:k=>{this.handleRendererDeselect(k)},onSelectionLimit:this.opts.onSelectionLimit,onHover:k=>{this.opts.onHover?.(k),this.opts.onSeatHover&&this.opts.onSeatHover(k?this.describeSeat(k):null)},onFocusSeat:this.opts.onFocusSeat,onViewChange:this.opts.onViewChange,onGAClick:this.opts.onGAClick,onSectionTap:k=>this.handleSectionTap(k),onDeckTap:k=>this.handleDeckTap(k),onFps:this.opts.onFps});if(n.createRenderer=r(u),this.closed)return m.destroy(),null;this.renderer=m;let b=null,f="free",h=[],g=performance.now();try{let k=await this.api.objects(this.key);this.hidden=new Set(k.hidden??[]),h=(k.closed??[]).filter(w=>typeof w=="string"),b=k.seats,f=k.default??"free"}catch{}if(n.loadStatuses=r(g),this.closed)return m.destroy(),this.renderer=null,null;let S=performance.now();m.setChart(this.visibleDoc()),(o.doc.floors?.length??0)>1&&m.setFloorOverview?.(!0),this.opts.colorblindSafe&&m.setColorblindSafe?.(!0),n.buildScene=r(S),this.closedSections=new Set(h);let y=performance.now();h.length&&m.setClosedSections?.(h),b&&this.applySeatsMap(b,f),this.rebuildSelectableSeatIds(),this.opts.selectedObjects?.length?this.select(this.opts.selectedObjects):this.emitSelectionValidity(),n.applyInitialState=r(y);let x=performance.now();m.forceDraw(),n.firstPaint=r(x);let I=performance.now();return this.attachVisibilityListener(),this.connect(),n.startRealtime=r(I),n.controllerTotal=r(i),{doc:o.doc,salesClosed:!!o.event.salesClosed,eventName:o.event.name,venue:o.event.venue,startsAt:o.event.startsAt,timezone:o.event.timezone??null,currency:p,mode:o.event.mode??"live",posterUrl:o.event.posterUrl??null,performanceProfile:n}}getSelection(){if(!this.renderer)return[];let e=[],i=new Set;for(let n of this.renderer.getSelection()){let r=this.groupedTableBySeatId.get(n.id);r?i.has(r.label)||(i.add(r.label),e.push(this.toTableSeat(r))):e.push(this.toSeat(n))}return e}seatDetails(e){let i=this.seatById.get(e);return i?this.describeSeat(i):null}clearSelection(){this.renderer?.clearSelection(),this.resetUnheldTableQuantities(),this.emitSelectionChange()}deselect(e){let i=new Set;for(let n of e){let r=this.groupedTableBySeatId.get(n)??this.groupedTablesByLabel.get(n);if(r)r.chairs.forEach(o=>i.add(o.id)),this.hold_?.labels.includes(r.label)||(this.tableQuantities.set(r.label,r.mode==="whole"?r.capacity:r.minOccupancy),r.mode==="variable"&&this.confirmedVariableTables.delete(r.label));else{let o=this.seatById.has(n)?n:this.labelToId.get(n);o&&i.add(o)}}this.renderer?.deselect([...i]),this.emitSelectionChange()}setMaxSelection(e){this.maxSelection=Math.max(0,Math.floor(e)),this.renderer?.setMaxSelection?.(this.rendererSelectionCap())}select(e){let i=new Set(this.getSelection().map(s=>s.label)),n=new Set,r=[];for(let s of e){let a=this.groupedTableBySeatId.get(s)??this.groupedTablesByLabel.get(s);if(a)this.tableTierResolution(a).kind==="invalid"?r.push(a.label):a.chairs.forEach(c=>{this.isSelectableByPolicy(c.id)&&n.add(c.id)});else{let l=this.seatById.has(s)?s:this.labelToId.get(s);if(!l||!this.isSelectableByPolicy(l))continue;let c=this.seatById.get(l);c&&this.seatTierResolution(c).kind==="invalid"?r.push(c.label):n.add(l)}}if(r.length&&this.emitError(new ke(ui(r))),!n.size)return[];if(this.renderer?.select?.([...n]),this.selectionGuestCount()>this.maxSelection)return this.renderer?.deselect([...n]),this.opts.onSelectionLimit?.(this.maxSelection),[];let o=this.getSelection().filter(s=>!i.has(s.label));return o.length&&this.emitSelectionChange(),o}selectCategories(e){let i=new Set(e);return this.select([...this.seatById.values()].filter(n=>i.has(n.categoryKey)).map(n=>n.id))}deselectCategories(e){let i=new Set(e);this.deselect(this.getSelection().filter(n=>i.has(n.categoryKey)).map(n=>n.id))}setSelectableObjects(e){this.selectableObjectRefs=e==null?null:[...new Set(e.filter(n=>typeof n=="string"&&!!n))],this.rebuildSelectableSeatIds();let i=this.renderer?.getSelection().filter(n=>!this.isSelectableByPolicy(n.id)).map(n=>n.id)??[];i.length&&this.deselect(i)}getSelectionValidity(e){if(this.numberOfPlacesToSelect==null&&!this.selectionValidators.length)return null;let i=this.getSelection(),n=e??i.reduce((r,o)=>r+(o.quantity??1),0);return ts(i,n,this.numberOfPlacesToSelect,this.selectionValidators,()=>this.hasOrphanedSelection())}hasOrphanedSelection(){let e=this.renderer;if(!e)return!1;let i=new Set(e.getSelection().map(n=>n.id));return i.size>0&&un(this.seatById.values(),n=>e.getStatus(n),i).length>0}rebuildSelectableSeatIds(){if(this.selectableObjectRefs==null){this.selectableSeatIds=null;return}let e=new Set;for(let i of this.selectableObjectRefs){let n=this.groupedTableBySeatId.get(i)??this.groupedTablesByLabel.get(i);if(n){n.chairs.forEach(o=>e.add(o.id));continue}let r=this.seatById.has(i)?i:this.labelToId.get(i);r&&e.add(r)}this.selectableSeatIds=e}isSelectableByPolicy(e){return this.selectableSeatIds==null||this.selectableSeatIds.has(e)}setTableQuantity(e,i){let n=this.groupedTablesByLabel.get(e);if(!n)return!1;let r=n.mode==="whole"?n.capacity:Math.floor(i);if(!Number.isInteger(r)||r<n.minOccupancy||r>n.maxOccupancy)return!1;let o=this.tableQuantities.get(e)??n.minOccupancy;return this.tableQuantities.set(e,r),this.selectionGuestCount()>this.maxSelection?(this.tableQuantities.set(e,o),this.opts.onSelectionLimit?.(this.maxSelection),!1):(n.mode==="variable"&&this.confirmedVariableTables.add(e),this.emitSelectionChange(),!0)}async replaceTableQuantity(e,i,n){let r=this.groupedTablesByLabel.get(e),o=this.hold_;if(!r||r.mode!=="variable"||!o?.labels.includes(e))return null;let s=Math.floor(i);if(!Number.isInteger(s)||s<r.minOccupancy||s>r.maxOccupancy)return null;if((o.items??[]).filter(d=>d.label!==e).reduce((d,p)=>d+(p.quantity??1),0)+s>this.maxSelection)return this.opts.onSelectionLimit?.(this.maxSelection),null;let l=(o.items??[]).map(d=>({label:d.label,tierId:d.tierId,quantity:d.label===e?s:d.quantity}));if(!l.some(d=>d.label===e))return null;let c=await this.api.hold(this.key,l,n,o.holdId);return this.tableQuantities.set(e,s),this.setHold({holdId:c.holdId,labels:l.map(d=>d.label),expiresAt:c.expiresAt,items:c.items}),this.hold_}rendererSelectionCap(){return this.maxSelection+this.groupedSelectionOverhead}selectionGuestCount(){return this.getSelection().reduce((e,i)=>e+(i.quantity??1),0)}handleRendererSelect(e){let i=this.groupedTableBySeatId.get(e.id);if(!this.isSelectableByPolicy(e.id)){this.renderer?.deselect(i?i.chairs.map(r=>r.id):[e.id]),this.emitSelectionChange();return}if((i?this.tableTierResolution(i):this.seatTierResolution(e)).kind==="invalid"){this.renderer?.deselect(i?i.chairs.map(r=>r.id):[e.id]),this.emitError(new ke(ui([i?.label??e.label]))),this.emitSelectionChange();return}if(i){if(this.selectionGuestCount()>this.maxSelection){this.renderer?.deselect(i.chairs.map(r=>r.id)),this.opts.onSelectionLimit?.(this.maxSelection),this.emitSelectionChange();return}this.renderer?.select?.(i.chairs.map(r=>r.id)),this.opts.onSelect?.(i.chairs[0]??e),this.opts.onTableSelectionRequest?.(this.toTableSeat(i)),this.emitSelectionChange();return}if(this.selectionGuestCount()>this.maxSelection){this.renderer?.deselect([e.id]),this.opts.onSelectionLimit?.(this.maxSelection),this.emitSelectionChange();return}this.opts.onSelect?.(e),this.emitSelectionChange()}handleRendererDeselect(e){let i=this.groupedTableBySeatId.get(e.id);i?(this.renderer?.deselect(i.chairs.map(n=>n.id)),this.hold_?.labels.includes(i.label)||(this.tableQuantities.set(i.label,i.mode==="whole"?i.capacity:i.minOccupancy),i.mode==="variable"&&this.confirmedVariableTables.delete(i.label)),this.opts.onDeselect?.(i.chairs[0]??e)):this.opts.onDeselect?.(e),this.emitSelectionChange()}resetUnheldTableQuantities(){for(let e of this.groupedTablesByLabel.values())this.hold_?.labels.includes(e.label)||(this.tableQuantities.set(e.label,e.mode==="whole"?e.capacity:e.minOccupancy),e.mode==="variable"&&this.confirmedVariableTables.delete(e.label))}resetTableQuantitiesForLabels(e){for(let i of e){let n=this.groupedTablesByLabel.get(i);n&&(this.tableQuantities.set(i,n.mode==="whole"?n.capacity:n.minOccupancy),n.mode==="variable"&&this.confirmedVariableTables.delete(i))}}tableQuantityRequest(e){if(e?.objectType!=="table")return{};if(e.bookingMode==="variable"&&!this.confirmedVariableTables.has(e.label))throw new Error("picker: confirm a variable table guest quantity before holding");return{quantity:e.quantity}}async hold(e,i){if(!this.renderer)return null;let r=e??this.getSelection().map(l=>l.label),o=(this.hold_?.items??[]).filter(l=>l.objectType==="ga"),s=[...new Set([...o.map(l=>l.label),...r])];if(!s.length)return null;let a=this.ticketIssue(s);if(a)throw new ke(a);if(this.hold_&&this.holdCovers(s))return this.hold_;try{let l=s.map(d=>{let p=o.find(b=>b.label===d);if(p)return{label:d,tierId:p.tierId,quantity:p.quantity};let u=this.labelToSeat.get(d),m=u?this.toSeat(u):null;return{label:d,...m?.tierId?{tierId:m.tierId}:{},...this.tableQuantityRequest(m)}}),c=await this.api.hold(this.key,l,i,this.hold_?.holdId);return this.setHold({holdId:c.holdId,labels:s,expiresAt:c.expiresAt,items:c.items}),this.hold_}catch(l){throw this.handle409Conflicts(l),l}}async resumeHold(e){if(this.closed||!e||!this.api.resume)return null;let i=await this.api.resume(this.key,e);if(this.closed)return null;let n=[...new Set(i.items.map(r=>r.label))];return n.length?(this.setHold({holdId:i.holdId,labels:n,expiresAt:i.expiresAt,items:i.items},"restored"),this.hold_):null}async extendHold(e){let i=this.hold_;if(!i||!this.api.extend)return null;try{let n=await this.api.extend(this.key,i.holdId,e);return this.hold_?.holdId!==i.holdId?this.hold_:(this.setHold({holdId:i.holdId,labels:i.labels,expiresAt:n.expiresAt,items:i.items}),this.hold_)}catch{return null}}categoryAvailability(){let e={},i=this.closedMemberIds();for(let[n,r]of this.seatById)this.groupedTableBySeatId.has(n)||i.has(n)||(this.getStatus(n)??"free")==="free"&&(e[r.categoryKey]=(e[r.categoryKey]??0)+1);for(let n of this.groupedTablesByLabel.values()){if(n.chairs.some(o=>i.has(o.id)))continue;let r=n.chairs[0];r&&(this.getStatus(r.id)??"free")==="free"&&(e[n.categoryKey]=(e[n.categoryKey]??0)+n.maxOccupancy)}return e}closedMemberIds(){let e=new Set,i=this.renderer;if(!i||!this.closedSections.size)return e;for(let n of this.closedSections)for(let r of i.sectionMembers?.(n)??[])e.add(r);return e}getGAAreas(){let e=this.visibleDoc();return e?lt(e).map(i=>{let n=e.categories.find(r=>r.key===i.categoryKey);return{id:i.id,label:i.label,...i.displayLabel?{displayLabel:i.displayLabel}:{},...i.displayType?{displayType:i.displayType}:{},capacity:Math.max(0,Math.floor(i.capacity)),available:Ge(i).filter(r=>this.statusOf(r)==="free").length,categoryKey:i.categoryKey,tiers:n?.tiers,price:n?.tiers?.[0]?.price??n?.price??0,currency:this.currency}}):[]}async holdGA(e,i,n={}){let r=this.visibleDoc();if(!r||!Number.isFinite(i)||i<1)return null;let o=lt(r).find(d=>d.id===e);if(!o)return null;let s=Ge(o).filter(d=>!this.hold_?.labels.includes(d)&&this.statusOf(d)==="free").slice(0,Math.floor(i));if(s.length!==Math.floor(i))return null;let a=new Map;for(let d of this.hold_?.items??[])a.set(d.label,{label:d.label,tierId:d.tierId,quantity:d.quantity});if(this.hold_&&!this.hold_?.items?.length)for(let d of this.hold_.seats)a.set(d.label,{label:d.label,...d.tierId?{tierId:d.tierId}:{}});for(let d of this.getSelection())a.set(d.label,{label:d.label,...d.tierId?{tierId:d.tierId}:{},...this.tableQuantityRequest(d)});for(let d of s)a.set(d,{label:d,...n.tierId?{tierId:n.tierId}:{}});let l=[...a.values()],c=await this.api.hold(this.key,l,n.ttlMs,this.hold_?.holdId);return this.setHold({holdId:c.holdId,labels:l.map(d=>d.label),expiresAt:c.expiresAt,items:c.items}),this.hold_}hasPremiumSeats(){for(let e of this.labelToSeat.values())if(e.commercial?.premium)return!0;return!1}getBestAvailableZones(){let e=this.visibleDoc();if(!e?.zones?.length)return[];let i=new Set(ct(e).sections.filter(n=>n.seatCount>0&&!!n.zone).map(n=>n.zone));return e.zones.filter(n=>i.has(n.id)).map(n=>({id:n.id,label:n.label}))}pickPremiumBlock(e,i,n){let r=this.visibleDoc();if(!r?.objects?.length)return null;let o=r.focalPoint??{x:0,y:0},s=new Set(this.groupedTablesByObject.keys()),a=be(r).filter(u=>!s.has(u.rowId)),l=new Set(this.hold_?.labels??[]),c=new Set;for(let u of a){if(l.has(u.label)||this.seatTierResolution(u).kind==="invalid")continue;let m=this.labelToId.get(u.label);((m?this.getStatus(m):void 0)??"free")==="free"&&c.add(u.label)}let d=Yo(a,c,{qty:e,categoryKey:i,zoneId:n,focal:o,preferPremium:!0});return d.labels.length!==e?null:d.labels.every(u=>this.labelToSeat.get(u)?.commercial?.premium)?[...d.labels]:null}async bestAvailable(e,i,n={}){let r=this.renderer;if(!r)return null;if(n.preferPremium){let o=this.pickPremiumBlock(e,i,n.zoneId);if(o){if(this.hold_&&!await this.release())return null;try{let s=o.map(d=>{let p=this.labelToSeat.get(d),u=p?this.toSeat(p):null;return{label:d,...u?.tierId?{tierId:u.tierId}:{}}}),a=await this.api.hold(this.key,s,n.ttlMs);r.clearSelection();let l=this.idsForLabels(o);l.length&&r.setStatus(l,"held"),this.setHold({holdId:a.holdId,labels:[...o],expiresAt:a.expiresAt,items:a.items});let c=o.map(d=>this.labelToSeat.get(d)).filter(d=>!!d).map(d=>this.toSeat(d));return this.opts.onSelectionChange?.(c),this.hold_}catch(s){let{status:a,reason:l}=hi(s);if(a===409&&l==="event_closed")throw this.opts.onSalesClosed?.(),s}}}if(this.hold_&&!await this.release())return null;try{let o=await this.api.bestAvailable(this.key,e,i,n.zoneId,n.ttlMs);r.clearSelection();let s=this.idsForLabels(o.labels);s.length&&r.setStatus(s,"held"),this.setHold({holdId:o.holdId,labels:[...o.labels],expiresAt:o.expiresAt,items:o.items});let a=o.labels.map(l=>this.labelToSeat.get(l)).filter(l=>!!l).map(l=>this.toSeat(l));return this.opts.onSelectionChange?.(a),this.hold_}catch(o){let{status:s,reason:a}=hi(o);throw s===409&&a==="event_closed"&&this.opts.onSalesClosed?.(),o}}async book(e,i,n){let r=this.renderer;if(!r)return null;if(!this.api.book)throw new Error("picker: transport has no book() \u2014 hold-only mode");let o=i??this.getSelection().map(c=>c.label);if(!o.length)return null;let s=this.ticketIssue(o);if(s)throw new ke(s);let a;try{if(this.hold_&&this.holdCovers(o))a=this.hold_.holdId;else{let c=this.hold_?.holdId,d=await this.api.hold(this.key,o.map(p=>{let u=this.labelToSeat.get(p),m=u?this.toSeat(u):null;return{label:p,...m?.tierId?{tierId:m.tierId}:{},...this.tableQuantityRequest(m)}}),n,c);a=d.holdId,this.setHold({holdId:a,labels:[...o],expiresAt:d.expiresAt,items:d.items})}await this.api.book(this.key,o,a,e)}catch(c){let{status:d,conflicts:p,reason:u}=hi(c);if(this.clearHold(),d===409&&u==="event_closed")this.opts.onSalesClosed?.();else if(d===409&&p?.length){let m=new Set(p.map(h=>h.label)),b=this.idsForLabels(m);b.length&&(r.setStatus(b,"booked"),r.deselect(b),this.resetTableQuantitiesForLabels(m));let f=o.filter(h=>!m.has(h));f.length&&a&&this.api.release(this.key,f,a).catch(()=>{}),this.emitSelectionChange()}else a&&this.api.release(this.key,o,a).catch(()=>{});throw c}let l=this.idsForLabels(o);return l.length&&(r.setStatus(l,"booked"),r.deselect(l)),this.clearHold(),this.resetTableQuantitiesForLabels(o),this.emitSelectionChange(),this.opts.onBook?.(e),o}async release(){let e=this.hold_;if(!e)return!0;try{let n=await this.api.release(this.key,e.labels,e.holdId);if(!this.releaseConfirmed(n,e.labels))return await this.resnapshot(),!1}catch(n){return this.emitError(n),!1}if(this.hold_?.holdId!==e.holdId)return!0;this.clearHold(),this.resetTableQuantitiesForLabels(e.labels);let i=this.idsForLabels(e.labels);return i.length&&(this.renderer?.deselect(i),this.renderer?.setStatus(i,"free")),!0}async releaseLabels(e){let i=this.hold_;if(!i)return!0;let n=e.filter(a=>i.labels.includes(a));if(!n.length)return!0;try{let a=await this.api.release(this.key,n,i.holdId);if(!this.releaseConfirmed(a,n))return await this.resnapshot(),!1}catch(a){return this.emitError(a),!1}if(this.hold_?.holdId!==i.holdId)return!0;let r=i.labels.filter(a=>!n.includes(a)),o=i.items?.filter(a=>!n.includes(a.label));r.length?this.setHold({...i,labels:r,items:o}):this.clearHold(),this.resetTableQuantitiesForLabels(n);let s=this.idsForLabels(n);return s.length&&(this.renderer?.deselect(s),this.renderer?.setStatus(s,"free")),!0}releaseConfirmed(e,i){let n=e?.released;return!Array.isArray(n)||i.every(r=>n.includes(r))}setStatus(e,i){this.renderer?.setStatus(e,i)}getStatus(e){return this.renderer?.getStatus(e)}notForSaleCategorySeatIds(){let e=this.doc;if(!e)return[];let i=new Set(e.categories.filter(r=>r.notForSale).map(r=>r.key));if(!i.size)return[];let n=[];for(let[r,o]of this.seatById)i.has(o.categoryKey)&&n.push(r);return n}flashSeat(e,i){this.renderer?.flashSeat(e,i)}zoomIn(){this.renderer?.zoomIn()}zoomOut(){this.renderer?.zoomOut()}zoomToFit(){this.renderer?.zoomToFit()}refitCurrentView(){this.renderer?.refitCurrentView?this.renderer.refitCurrentView():this.renderer?.zoomToFit()}worldToScreen(e){return this.renderer?.worldToScreen(e)??{x:0,y:0}}setSelectionFocus(e){this.renderer?.setSelectionFocus?.(e)}setAccessibilityFilter(e){this.renderer?.setAccessibilityFilter?.(e)}setCommercialLimitedFilter(e){this.renderer?.setCommercialLimitedFilter?.(e)}getFloors(){return this.renderer?.getFloors?.()??[]}getActiveFloorId(){return this.renderer?.getActiveFloorId?.()??""}setFloor(e){let i=this.renderer;!i?.setActiveFloor||e===i.getActiveFloorId?.()&&!i.isFloorOverview?.()||(i.setFloorOverview?.(!1),i.setStacked?.(!1),i.setActiveFloor(e),this.resnapshot(),this.emitSelectionChange())}setStacked(e){let i=this.renderer;!i?.setStacked||e===i.isStacked?.()||(i.setStacked(e),this.resnapshot())}isMultiFloor(){return(this._doc?.floors?.length??0)>1}setFloorOverview(e){let i=this.renderer;!i?.setFloorOverview||e===i.isFloorOverview?.()||(i.setFloorOverview(e),this.resnapshot(),this.emitSelectionChange())}isFloorOverview(){return this.renderer?.isFloorOverview?.()??!1}handleDeckTap(e){let i=this.renderer;i&&(i.setViewMode?.("flat"),i.setFloorOverview?.(!1),i.setStacked?.(!1),i.setActiveFloor?.(e),this.resnapshot(),this.emitSelectionChange(),this.opts.onDeckTap?.(e))}setViewMode(e){this.renderer?.setViewMode?.(e)}getViewMode(){return this.renderer?.getViewMode?.()??"flat"}getRung(){return this.renderer?.getRung?.()??"seats"}setRung(e){if(e==="zones"){this.overview();return}this.renderer?.setRung?.(e)}setCategoryFilter(e){this.renderer?.setCategoryFilter?.(e)}focusCategoryFilter(e){let i=this.renderer;if(i){if(i.clearSectionFocus?.(),this.opts.onSectionFocus?.(null),e?.length){let n=this.floorForCategories(e);n&&this.setFloor(n)}i.focusCategories?i.focusCategories(e):i.zoomToFit()}}floorForCategories(e){let i=this._doc;if(!i?.floors||i.floors.length<2)return null;let n=new Set(e),r=a=>a.some(l=>l.type==="row"&&(n.has(l.categoryKey)||(l.overrides??[]).some(c=>c.categoryKey!=null&&n.has(c.categoryKey)))||l.type==="gaArea"&&n.has(l.categoryKey)),o=this.getActiveFloorId(),s=i.floors.find(a=>a.id===o);return s&&r(s.objects)?null:i.floors.find(a=>r(a.objects))?.id??null}getViewport(){let e=this.renderer;return!e?.getVisibleWorldRect||!e.getWorldBounds?null:{visible:e.getVisibleWorldRect(),bounds:e.getWorldBounds()}}getMinimapSnapshot(){return this.renderer?.getMinimapSnapshot?.()??{sections:[],seats:[]}}panToWorld(e){this.renderer?.panToWorld?.(e)}clearSectionFocus(){this.renderer?.clearSectionFocus?.(),this.opts.onSectionFocus?.(null)}getRenderedQualityEvidence(){return this.renderer?.getRenderedQualityEvidence()??null}focusSection(e){this.handleSectionTap(e)}getSectionSeatCount(e){return this.renderer?.sectionMembers?.(e)?.length??0}overview(){this.renderer?.clearSectionFocus?.(),this.renderer?.zoomToFit(),this.opts.onSectionFocus?.(null)}handleSectionTap(e){let i=this.renderer;if(i){if(i.focusSection?i.focusSection(e):i.focusRegion?.(e),this.isSectionClosed(e)){this.opts.onSectionFocus?.(null);return}this.opts.onSectionFocus?.(this.sectionSummary(e))}}sectionSummary(e){let i=this.renderer,n=this._doc;if(!i||!n)return null;let r=n.objects.find(b=>b.type==="section"&&b.id===e);if(!r)return null;let o=i.sectionMembers?.(e)??[],s=new Map,a=new Set,l=0;for(let b of o){let f=this.seatById.get(b);if(!f)continue;let h=this.groupedTableBySeatId.get(b);if(h){if(a.has(h.label))continue;a.add(h.label),s.set(h.categoryKey,(s.get(h.categoryKey)??0)+h.maxOccupancy),i.getStatus(h.chairs[0]?.id??b)==="free"&&(l+=h.maxOccupancy)}else s.set(f.categoryKey,(s.get(f.categoryKey)??0)+1),i.getStatus(b)==="free"&&l++}let c=[...s.entries()].map(([b,f])=>{let h=n.categories.find(x=>x.key===b),g=h?.tiers?.length?h.tiers.map(x=>x.price):[h?.price??0],S=Math.min(...g),y=Math.max(...g);return{key:b,count:f,label:h?.label??b,color:h?.color??"#6e7bff",price:S,priceMin:S,priceMax:y}}).sort((b,f)=>b.price-f.price),d=c.map(b=>b.priceMin),p=c.map(b=>b.priceMax),u=r.zone?n.zones?.find(b=>b.id===r.zone):void 0,m=r.color??u?.color??c[0]?.color??"#6e7bff";return{id:e,label:r.displayLabel??r.label,zoneLabel:u?.label??"",...r.entrance&&r.entrance.trim()?{entrance:r.entrance.trim()}:{},color:m,seatsLeft:l,priceMin:d.length?Math.min(...d):0,priceMax:p.length?Math.max(...p):0,categories:c}}destroy(){if(this.closed=!0,this.detachVisibilityListener(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.expiryTimer&&(clearTimeout(this.expiryTimer),this.expiryTimer=null),this.realtime){try{this.realtime.stop()}catch{}this.realtime=null}if(this.ws){try{this.ws.close()}catch{}this.ws=null}this.renderer?.destroy(),this.renderer=null}toSeat(e){let i=this.groupedTableBySeatId.get(e.id);if(i)return this.toTableSeat(i);let n=e.commercial?{commercial:e.commercial}:void 0,r=e.displayLabel?{displayLabel:e.displayLabel}:void 0,o=e.accessibility?.length?{accessibility:e.accessibility}:void 0,s=e.wheelchairSpaceType?{wheelchairSpaceType:e.wheelchairSpaceType}:void 0,a=this.seatContext.get(e.id),l=this.tiersForSeat(e),c=this.seatTierResolution(e);if(c.kind!=="resolved"||!l)return{id:e.id,label:e.label,...r,...a,categoryKey:e.categoryKey,price:this.priceFor(e.categoryKey),currency:this.currency,...n,...o,...s};let d=c.tier;return{id:e.id,label:e.label,...r,...a,categoryKey:e.categoryKey,price:d.price,currency:this.currency,tiers:l,tierId:d.id,...n,...o,...s}}toTableSeat(e){let i=e.chairs[0],n=this.tiersFor(e.categoryKey)?.filter(s=>it(this._doc,this.tableTierSeat(e),s.id).kind==="resolved"),r=this.tableTierResolution(e),o=r.kind==="resolved"?r.tier:void 0;return{id:i?.id??e.objectId,label:e.label,displayLabel:e.displayLabel??e.label,...e.displayType?{displayType:e.displayType,rowType:e.displayType}:{},objectId:e.objectId,sectionLabel:i?this.seatContext.get(i.id)?.sectionLabel:void 0,rowLabel:e.displayLabel??e.label,categoryKey:e.categoryKey,price:o?.price??this.priceFor(e.categoryKey),currency:this.currency,...n?{tiers:n,tierId:o?.id}:{},objectType:"table",bookingMode:e.mode,quantity:this.tableQuantities.get(e.label)??(e.mode==="whole"?e.capacity:e.minOccupancy),capacity:e.capacity,minOccupancy:e.minOccupancy,maxOccupancy:e.maxOccupancy,physicalSeatIds:e.chairs.map(s=>s.id)}}describeSeat(e){let i=this._doc?.categories.find(n=>n.key===e.categoryKey);return{...this.toSeat(e),categoryLabel:i?.label??e.categoryKey,categoryColor:i?.color??"#6e7bff",status:this.renderer?.getStatus(e.id)??"free",currency:this.currency,...this.seatContext.get(e.id)}}priceFor(e){return this._doc?.categories.find(i=>i.key===e)?.price??0}tiersFor(e){let i=this._doc?.categories.find(n=>n.key===e)?.tiers;return i&&i.length?i:void 0}tiersForSeat(e){if(!this._doc)return;let i=$o(this._doc,e);return i.length?i:void 0}seatTierResolution(e){return this._doc?it(this._doc,e,this.seatTiers.get(e.id)):{kind:"none"}}tableTierSeat(e){return{label:e.label,categoryKey:e.categoryKey,accessibility:e.chairs.flatMap(i=>i.accessibility??[])}}tableTierResolution(e){if(!this._doc)return{kind:"none"};let i=e.chairs[0]?.id??"";return it(this._doc,this.tableTierSeat(e),this.seatTiers.get(i))}setSeatTier(e,i){let n=this.seatById.get(e);if(!n)return;let r=this.tiersForSeat(n);if(r){if(i==null)this.seatTiers.delete(e);else if(r.some(o=>o.id===i))this.seatTiers.set(e,i);else return;this.emitSelectionChange(),this.hold_&&(this.hold_={...this.hold_,seats:this.seatsForLabels(this.hold_.labels)})}}seatsForLabels(e){let i=[];for(let n of e){let r=this.labelToSeat.get(n);r&&i.push(this.toSeat(r))}return i}emitSelectionChange(){let e=this.getSelection();this.opts.onSelectionChange?.(e),this.emitSelectionValidity(),this.emitOrphanHint()}emitSelectionValidity(){let e=this.getSelectionValidity();e&&(this.opts.onSelectionValidityChange?.(e),e.isValid?this.lastSelectionValidity!==!0&&this.opts.onSelectionValid?.(e.seats):this.lastSelectionValidity!==!1&&this.opts.onSelectionInvalid?.(e),this.lastSelectionValidity=e.isValid)}ticketIssue(e){if(!this._doc)return null;let i=e?this.seatsForLabels(e):this.getSelection();return Zo(this._doc,i.map(n=>({label:n.label,...n.tierId?{tierId:n.tierId}:{}})))}emitOrphanHint(){if(!this.opts.onHint)return;let e=this.renderer;if(!e)return;let i=this.ticketIssue();if(i){this.hintShown=!0,this.opts.onHint(i.code==="companion_pair_required"?oe("picker.companionPairRequired"):"That ticket choice is not available for the selected seat.");return}let n=new Set(e.getSelection().map(o=>o.id));(n.size?un(this.seatById.values(),o=>e.getStatus(o),n):[]).length>0?(this.hintShown=!0,this.opts.onHint(oe("picker.orphanHint"))):this.hintShown&&(this.hintShown=!1,this.opts.onHint(null))}setColorblindSafe(e){this.renderer?.setColorblindSafe?.(e)}emitError(e){this.opts.onError?this.opts.onError(e):console.error("[picker]",e)}holdCovers(e){let i=this.hold_;if(!i||i.labels.length!==e.length||!e.every(o=>i.labels.includes(o)))return!1;let n=new Map((i.items??[]).map(o=>[o.label,o.tierId])),r=new Map((i.items??[]).map(o=>[o.label,o.quantity??1]));return e.every(o=>{let s=this.labelToSeat.get(o),a=s?this.toSeat(s):null,l=a?.tierId??null;return(a?.objectType!=="table"||(a.bookingMode!=="variable"||this.confirmedVariableTables.has(o))&&(!r.has(o)||r.get(o)===a.quantity))&&(!n.has(o)||n.get(o)===l)})}handle409Conflicts(e){let{status:i,conflicts:n}=hi(e);if(i!==409||!n?.length)return;let r=this.renderer;if(!r)return;let o=this.idsForLabels(n.map(s=>s.label));o.length&&(r.deselect(o),r.setStatus(o,"held"),this.resetTableQuantitiesForLabels(n.map(s=>s.label))),this.emitSelectionChange()}setHold(e,i="created"){for(let o of e.items??[])this.groupedTablesByLabel.has(o.label)&&o.quantity!=null&&(this.tableQuantities.set(o.label,o.quantity),this.groupedTablesByLabel.get(o.label)?.mode==="variable"&&this.confirmedVariableTables.add(o.label));let n={...e,seats:this.seatsForLabels(e.labels)};this.hold_=n,this.renderer?.setOwnedHold?.(this.idsForLabels(n.labels)),this.expiryTimer&&clearTimeout(this.expiryTimer);let r=Math.max(0,n.expiresAt-Date.now());this.expiryTimer=setTimeout(()=>{this.expireActiveHold()},r),i==="restored"?this.opts.onHoldRestored?.(n):this.opts.onHold?.(n)}clearHold(){this.hold_=null,this.renderer?.setOwnedHold?.(null),this.expiryTimer&&(clearTimeout(this.expiryTimer),this.expiryTimer=null)}async expireActiveHold(){let e=this.hold_;if(e){try{let i=await this.api.objects(this.key);if(this.hold_?.holdId!==e.holdId)return;this.applySeatsMap(i.seats,i.default??"free")}catch{this.hold_?.holdId===e.holdId&&(this.expiryTimer=setTimeout(()=>{this.expireActiveHold()},2e3));return}if(this.hold_?.holdId===e.holdId){if(e.labels.some(i=>this.statusOf(i)==="held")){this.expiryTimer=setTimeout(()=>{this.expireActiveHold()},1e3);return}this.clearHold(),this.opts.onHoldExpired?.()}}}applySeatsMap(e,i="free"){let n=this.renderer;if(!n)return;this.liveStatuses=new Map(Object.entries(e)),this.liveDefault=i;let r=mn(i);this.allIds.length&&n.setStatus(this.allIds,r),n.setOwnedHold?.(this.idsForLabels(this.hold_?.labels??[]));let o={free:[],held:[],booked:[],not_for_sale:[]};for(let[a,l]of Object.entries(e))o[mn(l)].push(...this.idsForLabel(a));["free","held","booked","not_for_sale"].forEach(a=>{a!==r&&o[a].length&&n.setStatus(o[a],a)});let s=this.notForSaleCategorySeatIds();s.length&&n.setStatus(s,"not_for_sale"),this.clearBookedHoldIfSettled(),this.opts.onStatusChange?.()}statusOf(e){return this.liveStatuses.get(e)??this.liveDefault}clearBookedHoldIfSettled(){let e=this.hold_;e?.labels.every(i=>this.statusOf(i)==="booked")&&(this.clearHold(),this.resetTableQuantitiesForLabels(e.labels))}async resnapshot(){try{let e=await this.api.objects(this.key);this.applySeatsMap(e.seats,e.default??"free")}catch{}}async refresh(){await this.resnapshot()}attachVisibilityListener(){if(this.onVisibilityChange||typeof document>"u"||typeof document.addEventListener!="function")return;let e=()=>{this.closed||document.visibilityState==="visible"&&this.resnapshot().then(()=>{this.closed||this.renderer?.forceDraw()})};this.onVisibilityChange=e,document.addEventListener("visibilitychange",e)}detachVisibilityListener(){this.onVisibilityChange&&(typeof document<"u"&&typeof document.removeEventListener=="function"&&document.removeEventListener("visibilitychange",this.onVisibilityChange),this.onVisibilityChange=null)}realtimeSink(){return{applyStatuses:e=>this.applyStatusChanges(e),applyProjection:e=>this.applySeatsMap(e.exceptions,e.default),resync:()=>this.resnapshot(),onSections:(e,i)=>{let n=this.syncHidden(e),r=this.syncClosed(i);n&&this.resnapshot(),(n||r)&&this.opts.onStatusChange?.()}}}applyStatusChanges(e){let i=this.renderer;if(i){for(let n of e){this.liveStatuses.set(n.label,n.status);let r=this.idsForLabel(n.label);if(!r.length)continue;let o=mn(n.status);this.opts.flashOnLiveChange&&o!=="free"&&r.some(s=>i.getStatus(s)==="free")&&!this.hold_?.labels.includes(n.label)&&r.forEach(s=>i.flashSeat(s,o==="held"?"#f4b740":"#f43f5e")),i.setStatus(r,o)}this.opts.keepLiveWhileHidden&&typeof document<"u"&&document.visibilityState==="hidden"&&i.forceDraw(),this.clearBookedHoldIfSettled(),this.opts.onStatusChange?.()}}connect(){if(this.closed)return;let e=this.api.socketUrl(this.key);if(!e)return;if(!this.realtime&&this.api.createRealtime){let n=null;try{n=this.api.createRealtime(this.key,this.realtimeSink())}catch{n=null}if(n){this.realtime=n,n.start();return}}if(this.realtime)return;let i;try{let n=this.api.socketProtocols?.(this.key);i=n&&n.length?new WebSocket(e,n):new WebSocket(e)}catch{this.scheduleReconnect();return}this.ws=i,i.onopen=()=>{this.attempt=0,this.resnapshot()},i.onmessage=n=>{let r;try{r=JSON.parse(typeof n.data=="string"?n.data:"")}catch{return}if(!this.renderer||!r||typeof r!="object")return;let s=r;Array.isArray(s.hidden)&&this.syncHidden(s.hidden)&&(this.resnapshot(),this.opts.onStatusChange?.()),Array.isArray(s.closed)&&this.syncClosed(s.closed)&&this.opts.onStatusChange?.(),s.type!=="hidden"&&(s.seats&&typeof s.seats=="object"?this.applySeatsMap(s.seats):Array.isArray(s.changes)&&this.applyStatusChanges(s.changes))},i.onclose=()=>{this.ws===i&&(this.ws=null),this.scheduleReconnect()},i.onerror=()=>{try{i.close()}catch{}}}scheduleReconnect(){if(this.closed||this.reconnectTimer)return;let e=Math.min(this.attempt++,5),i=Uo(e,{baseMs:1e3,maxMs:hl,jitter:1});this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},i)}};var fl=5,ml=-1.1,gn=35;function yn(t,e){let i=t-W,n=Math.atan2(fl-i,e)*180/Math.PI,r=Math.atan2(ml-i,e)*180/Math.PI;return r<-gn&&(n+=-gn-r,r=-gn),{topPitch:n,basePitch:r}}var q=2048,pe=1024,Pt=Fe,O=Math.PI*2,bl=pe/180,rt=t=>(t+180)/360*q,V=t=>(90-t)/180*pe;function as(t){let e=2166136261;for(let i=0;i<t.length;i++)e^=t.charCodeAt(i),e=Math.imul(e,16777619);return e>>>0}function ls(t){let e=t>>>0;return()=>{e|=0,e=e+1831565813|0;let i=Math.imul(e^e>>>15,1|e);return i=i+Math.imul(i^i>>>7,61|i)^i,((i^i>>>14)>>>0)/4294967296}}var pi=96,kn=360/pi,gl=.6,Sn=[17,23,42];function vn(t,e,i=1){let n=Math.max(0,Math.min(.58,e)),r=Math.round(t[0]+(Sn[0]-t[0])*n),o=Math.round(t[1]+(Sn[1]-t[1])*n),s=Math.round(t[2]+(Sn[2]-t[2])*n);return`rgba(${r},${o},${s},${i})`}function ns(t,e,i){return[Math.round(t[0]+(e[0]-t[0])*i),Math.round(t[1]+(e[1]-t[1])*i),Math.round(t[2]+(e[2]-t[2])*i)]}function te(t,e,i){let n=(1-Math.abs(2*i-1))*e,r=(t%360+360)%360/60,o=n*(1-Math.abs(r%2-1)),s=0,a=0,l=0;r<1?[s,a,l]=[n,o,0]:r<2?[s,a,l]=[o,n,0]:r<3?[s,a,l]=[0,n,o]:r<4?[s,a,l]=[0,o,n]:r<5?[s,a,l]=[o,0,n]:[s,a,l]=[n,0,o];let c=i-n/2;return[Math.round((s+c)*255),Math.round((a+c)*255),Math.round((l+c)*255)]}var rs=new Map;function os(t){if(!t)return null;let e=rs.get(t);if(e)return e;let i=2166136261;for(let o=0;o<t.length;o++)i^=t.charCodeAt(o),i=Math.imul(i,16777619);let n=(i>>>0)%360,r=te(n,.3,.42);return rs.set(t,r),r}function yl(t,e,i,n){let r=new Array(pi).fill(null),o=0,s=t.sectionId;for(let a of e){if(a.id===t.id)continue;let l=a.sectionId;if(!l||s&&l===s)continue;let c=a.x-t.x,d=a.y-t.y,p=Math.hypot(c,d)*Pt;if(p<1.5||p>95)continue;let u=a.eyeHeightM??W,m=u-n;Math.abs(m)>o&&(o=Math.abs(m));let b=Math.atan2(m,p)*180/Math.PI,f=Math.atan2(u-W-n,p)*180/Math.PI,g=((Math.atan2(c,-d)-i)*180/Math.PI+540)%360-180,S=Math.min(pi-1,Math.max(0,Math.floor((g+180)/kn))),y=b>34&&p<16,x=r[S];x?(b>x.top&&(x.top=b),f<x.base&&(x.base=f),p<x.nearM&&(x.nearM=p,x.tint=os(a.categoryKey)),x.overhead=x.overhead||y):r[S]={top:b,base:f,nearM:p,overhead:y,tint:os(a.categoryKey)}}return{bins:r,maxDelta:o}}function Sl(t,e,i,n){for(let r=0;r<pi;r++){let o=e[r];if(!o)continue;let s=-180+r*kn,a=i(s),l=i(s+kn);if(!(l>a))continue;let c=Math.min(72,o.top),d=Math.min(o.base,-4),p=n(c),u=n(d);if(u<=p)continue;let m=o.nearM/95,b=o.tint,f=b?ns([44,54,80],b,.34):[44,54,80],h=b?ns([24,30,48],b,.28):[24,30,48],g=t.createLinearGradient(0,p,0,u);g.addColorStop(0,vn(f,m)),g.addColorStop(.24,vn(h,m)),g.addColorStop(1,vn([10,13,22],m)),t.fillStyle=g,t.fillRect(a,p,l-a+1,u-p),t.fillStyle=`rgba(150,165,205,${.35*(1-m*.55)})`,t.fillRect(a,p,l-a+1,1.5);let y=Math.min(u,n(0))-p;if(y>8){let I=1-m*.4;for(let k=1;k<6;k++){let w=p+y*k/6;t.fillStyle=`rgba(0,0,0,${.16*I})`,t.fillRect(a,w,l-a+1,1.5),t.fillStyle=`rgba(120,134,170,${.1*I})`,t.fillRect(a,w+1.5,l-a+1,1.2)}}if(o.overhead){let x=n(Math.min(86,c+12)),I=t.createLinearGradient(0,x,0,p);I.addColorStop(0,"rgba(3,4,8,0.9)"),I.addColorStop(1,"rgba(3,4,8,0)"),t.fillStyle=I,t.fillRect(a,x,l-a+1,p-x),t.fillStyle="rgba(120,130,160,0.14)",t.fillRect(a,p-1.5,l-a+1,1.5)}}}function vl(t,e,i){let r=new Array(72).fill(!1),o=new Array(72).fill(1/0),s=new Set,a=0;for(let g of i){a++,g.sectionId&&s.add(g.sectionId);let S=g.x-e.x,y=g.y-e.y,x=Math.hypot(S,y)*Pt;if(x<.5)continue;let I=Math.atan2(S,-y),k=Math.floor((I+Math.PI)/O*72);k<0?k=0:k>=72&&(k=71),r[k]=!0,x<o[k]&&(o[k]=x)}let l=0,c=[];for(let g=0;g<72;g++)r[g]&&(l++,c.push(o[g]));let d=l/72*360;c.sort((g,S)=>g-S);let p=c.length?c[c.length>>1]:0,u=c.length?c[Math.floor(c.length*.15)]??p:0,m=c.length?c[Math.floor(c.length*.85)]??p:0,b=u>.5?m/u:1,f=as(`${a}|${[...s].sort().join(",")}|${Math.round(e.x)},${Math.round(e.y)}`),h;return d>=300&&p>11&&b>1.35?h="sport":d>=285?h="arena":h="proscenium",{mode:h,seed:f,voidRadiusM:p,aspect:b}}var kl=5;function xl(t,e,i){switch(i){case 1:t.beginPath(),t.ellipse(0,-e*.14,e*1.16,e*1.16,0,0,O),t.fill();break;case 2:t.beginPath(),t.ellipse(0,-e*1.02,e*.42,e*.42,0,0,O),t.fill(),t.beginPath(),t.ellipse(0,-e*.2,e*.98,e*1.02,0,0,O),t.fill();break;case 3:t.beginPath(),t.ellipse(0,-e*.36,e*1.04,e*.6,0,Math.PI,O),t.fill(),t.beginPath(),t.ellipse(0,-e*.52,e*1.22,e*.24,0,0,O),t.fill();break;case 4:t.beginPath(),t.ellipse(-e*.66,e*.5,e*.5,e*1.35,0,0,O),t.fill(),t.beginPath(),t.ellipse(e*.66,e*.5,e*.5,e*1.35,0,0,O),t.fill(),t.beginPath(),t.ellipse(0,-e*.08,e*1.06,e*1.08,0,0,O),t.fill();break;default:break}}function wl(t,e,i,n,r){let o=n*.44,s=n*r.shoulderK,a=n*.66,l=n*1.68,c=n*5.4,d=`rgba(${r.clothing[0]},${r.clothing[1]},${r.clothing[2]},${r.alpha})`,p=`rgba(${r.tone[0]},${r.tone[1]},${r.tone[2]},${r.alpha})`;t.save(),t.translate(e,i);let u=r.lean*n;t.fillStyle=d,t.beginPath(),t.moveTo(-o,a),t.quadraticCurveTo(-o*1.18,l-u-n*.6,-s,l-u),t.quadraticCurveTo(-s*1.05,l+n*1.2,-s*.94,c),t.lineTo(s*.94,c),t.quadraticCurveTo(s*1.05,l+n*1.2,s,l+u),t.quadraticCurveTo(o*1.18,l+u-n*.6,o,a),t.closePath(),t.fill(),t.fillStyle=p,t.fillRect(-o*.82,n*.5,o*1.64,n*.9),t.save(),t.rotate(r.tilt),t.translate(r.turn*n,0),t.fillStyle=p,n>=18?(t.beginPath(),t.moveTo(-n*.9,-n*.15),t.quadraticCurveTo(-n*.96,-n*1.12,0,-n*1.06),t.quadraticCurveTo(n*.96,-n*1.12,n*.9,-n*.15),t.quadraticCurveTo(n*.86,n*.55,n*.36,n*.98),t.quadraticCurveTo(0,n*1.14,-n*.36,n*.98),t.quadraticCurveTo(-n*.86,n*.55,-n*.9,-n*.15),t.closePath(),t.fill(),n>=22&&(t.beginPath(),t.ellipse(-n*.9,n*.18,n*.13,n*.22,0,0,O),t.ellipse(n*.9,n*.18,n*.13,n*.22,0,0,O),t.fill())):(t.beginPath(),t.ellipse(0,0,n*.9,n*1.06,0,0,O),t.fill()),xl(t,n,r.hair),r.rim>.01&&(t.strokeStyle=`rgba(245,205,150,${(.5*r.rim).toFixed(3)})`,t.lineWidth=Math.max(1,n*.14),t.beginPath(),t.ellipse(0,-n*.06,n*.86,n*1,0,Math.PI*1.12,Math.PI*1.9),t.stroke()),t.restore(),r.rim>.01&&(t.strokeStyle=`rgba(240,200,150,${(.28*r.rim).toFixed(3)})`,t.lineWidth=Math.max(1,n*.12),t.beginPath(),t.moveTo(-s*.8,l-n*.05),t.quadraticCurveTo(-o,l-n*.75,0,l-n*.82),t.quadraticCurveTo(o,l-n*.75,s*.8,l-n*.05),t.stroke()),t.restore()}function Il(t,e,i,n,r,o,s){t.fillStyle=`rgba(${r[0]},${r[1]},${r[2]},${s})`,t.beginPath(),t.moveTo(e-n*1.72,i+n*4),t.quadraticCurveTo(e-n*1.78,i+n*1.55,e-n*.46,i+n*1.02),t.lineTo(e-n*.4,i+n*.62),t.lineTo(e+n*.4,i+n*.62),t.lineTo(e+n*.46,i+n*1.02),t.quadraticCurveTo(e+n*1.78,i+n*1.55,e+n*1.72,i+n*4),t.closePath(),t.fill(),t.fillStyle=`rgba(${o[0]},${o[1]},${o[2]},${s})`,t.beginPath(),t.ellipse(e,i,n*.9,n*1.05,0,0,O),t.fill()}function wn(t,e,i,n,r){let o=n*.1,s=i-n*.9,a=i-n*.74,l=i-n*.46,c=n*.13,d=n*.09,p=`rgba(${r.tone[0]},${r.tone[1]},${r.tone[2]},${r.alpha})`,u=t.createRadialGradient(e,i,1,e,i,n*.24);u.addColorStop(0,"rgba(0,0,0,0.4)"),u.addColorStop(1,"rgba(0,0,0,0)"),t.save(),t.scale(1,.28),t.fillStyle=u,t.beginPath(),t.ellipse(e,i/.28,n*.24,n*.24,0,0,O),t.fill(),t.restore(),t.fillStyle=p,t.beginPath(),t.moveTo(e-d,l),t.lineTo(e-d*.7,i),t.lineTo(e-d*.1,i),t.lineTo(e-d*.1,l+n*.02),t.lineTo(e+d*.1,l+n*.02),t.lineTo(e+d*.1,i),t.lineTo(e+d*.7,i),t.lineTo(e+d,l),t.closePath(),t.fill(),t.beginPath(),t.moveTo(e-c,a),t.quadraticCurveTo(e-c*.9,l-n*.12,e-d,l),t.lineTo(e+d,l),t.quadraticCurveTo(e+c*.9,l-n*.12,e+c,a),t.quadraticCurveTo(e,a-n*.05,e-c,a),t.closePath(),t.fill(),t.lineCap="round",t.lineJoin="round",t.strokeStyle=p,t.lineWidth=n*.055;let m=a+n*.02;r.pose===1?(t.beginPath(),t.moveTo(e-c*.8,m),t.lineTo(e-c*1.5,i-n*1.02),t.moveTo(e+c*.8,m),t.lineTo(e+c*1.5,i-n*1.02),t.stroke()):r.pose===2?(t.beginPath(),t.moveTo(e-c*.8,m),t.lineTo(e+d*1.4,l-n*.02),t.moveTo(e+c*.8,m),t.lineTo(e-d*.4,l-n*.06),t.stroke(),t.fillStyle=p,t.beginPath(),t.ellipse(e+d*1.5,l-n*.04,n*.07,n*.09,-.5,0,O),t.fill()):r.pose===3?(t.beginPath(),t.moveTo(e-c*.8,m),t.lineTo(e-c*.2,s+o*.6),t.moveTo(e+c*.8,m),t.lineTo(e+c*1.1,l),t.stroke(),t.lineWidth=n*.02,t.beginPath(),t.moveTo(e-c*.2,s+o*.9),t.lineTo(e-c*.2,i-n*.02),t.stroke()):(t.beginPath(),t.moveTo(e-c*.85,m),t.lineTo(e-c*.95,l+n*.02),t.moveTo(e+c*.85,m),t.lineTo(e+c*.95,l+n*.02),t.stroke()),t.fillStyle=p,t.fillRect(e-o*.34,s+o*.6,o*.68,o*.9),t.beginPath(),t.ellipse(e,s,o*.86,o*1.05,0,0,O),t.fill(),r.rimStrength>.01&&(t.strokeStyle=`rgba(${r.rim[0]},${r.rim[1]},${r.rim[2]},${(.6*r.rimStrength).toFixed(3)})`,t.lineWidth=Math.max(1,n*.02),t.beginPath(),t.moveTo(e-c,a),t.lineTo(e-o*.6,s+o*.4),t.moveTo(e-o*.7,s),t.ellipse(e,s,o*.84,o*1.02,0,Math.PI*1.05,Math.PI*1.55),t.stroke())}function fi(t,e,i,n,r,o,s,a,l){t.save(),t.globalCompositeOperation="lighter";let c=t.createLinearGradient(0,i,0,r);c.addColorStop(0,`rgba(${a},${l})`),c.addColorStop(.5,`rgba(${a},${(l*.4).toFixed(3)})`),c.addColorStop(1,`rgba(${a},0)`),t.fillStyle=c,t.beginPath(),t.moveTo(e-o,i),t.lineTo(n-s,r),t.lineTo(n+s,r),t.lineTo(e+o,i),t.closePath(),t.fill(),t.restore()}function In(t,e,i,n,r){let o=t.createRadialGradient(e,i,0,e,i,n*3);o.addColorStop(0,`rgba(${r},0.9)`),o.addColorStop(.4,`rgba(${r},0.35)`),o.addColorStop(1,`rgba(${r},0)`),t.fillStyle=o,t.beginPath(),t.arc(e,i,n*3,0,O),t.fill(),t.fillStyle=`rgba(${r},1)`,t.beginPath(),t.arc(e,i,n,0,O),t.fill()}function Tl(t,e,i){let n=document.createElement("canvas");n.width=q,n.height=pe;let r=n.getContext("2d"),o=e.x-t.x,s=e.y-t.y,a=Math.hypot(o,s),l=Math.max(2,a*Pt),c=t.eyeHeightM??W,d=vl(t,e,i),p=ls(d.seed),u=210+p()*150,m=te(220+(p()-.5)*60,.55,.82),b=`${m[0]},${m[1]},${m[2]}`,f=r.createLinearGradient(0,0,0,pe);f.addColorStop(0,"#080b12"),f.addColorStop(.42,"#12182c"),f.addColorStop(.5,"#1c2440"),f.addColorStop(.56,"#151b2c"),f.addColorStop(.78,"#171e30"),f.addColorStop(1,"#131829"),r.fillStyle=f,r.fillRect(0,0,q,pe);let h=r.createLinearGradient(0,V(-6),0,pe);h.addColorStop(0,"rgba(30, 37, 56, 0)"),h.addColorStop(.55,"rgba(30, 37, 56, 0.22)"),h.addColorStop(1,"rgba(22, 28, 44, 0.12)"),r.fillStyle=h,r.fillRect(0,V(-6),q,pe-V(-6));let g=Math.atan2(o,-s),S=yl(t,i,g,c),y=S.maxDelta>=gl;y&&Sl(r,S.bins,rt,V);let x=Math.max(.3,Math.min(1,1-(l-6)/60)),I=yn(c,l),k=Math.min(80,Math.atan2(4,l)*180/Math.PI),w=Math.min(45,I.topPitch),M=I.basePitch;d.mode==="sport"?Ml(r,l,c,d,x,u,b,p):d.mode==="arena"?Cl(r,l,c,d,x,b,p):Ll(r,k,w,M,x,u,b,p);let C=d.mode==="sport"?34:24+Math.floor(p()*8);r.fillStyle=`rgba(${b},0.8)`;for(let R=0;R<C;R++){let v=(R+.5)/C*q,T=V(d.mode==="sport"?58:54+R*7%3*6);r.beginPath(),r.arc(v,T,d.mode==="sport"?2.6:3.2,0,O),r.fill()}Pl(r,t,i,e,g,c,o,s,y,d);let L=r.createLinearGradient(0,0,0,pe);return L.addColorStop(0,"rgba(0,0,0,0.85)"),L.addColorStop(.12,"rgba(0,0,0,0)"),L.addColorStop(.9,"rgba(0,0,0,0)"),L.addColorStop(1,"rgba(0,0,0,0.55)"),r.fillStyle=L,r.fillRect(0,0,q,pe),{url:n.toDataURL("image/jpeg",.82),distanceM:Math.round(l)}}function Ll(t,e,i,n,r,o,s,a){let l=rt(-e),c=rt(e),d=V(i),p=V(n),u=c-l,m=p-d,b=V(Math.min(50,i+10)),f=u*(1.1+(1-r)*.5),h=t.createRadialGradient(q/2,(d+p)/2,8,q/2,(d+p)/2,f);h.addColorStop(0,"rgba(255, 214, 150, 0.34)"),h.addColorStop(.28,"rgba(150, 150, 230, 0.3)"),h.addColorStop(.6,"rgba(99, 102, 241, 0.12)"),h.addColorStop(1,"rgba(99, 102, 241, 0)"),t.fillStyle=h,t.fillRect(l-u*.6,d-m*1.2,u*2.2,m*3.4);let g=te(o,.62,.55),S=te(o+40,.7,.5),y=te(o+70,.78,.52);t.save(),t.beginPath(),t.rect(l,d,u,m),t.clip();let x=t.createLinearGradient(0,d,0,p);x.addColorStop(0,`rgb(${g[0]},${g[1]},${g[2]})`),x.addColorStop(.5,`rgb(${S[0]},${S[1]},${S[2]})`),x.addColorStop(1,`rgb(${y[0]},${y[1]},${y[2]})`),t.globalAlpha=.8,t.fillStyle=x,t.fillRect(l,d,u,m),t.globalAlpha=1;let I=t.createRadialGradient(q/2,(d+p)/2,u*.12,q/2,(d+p)/2,u*.62);I.addColorStop(0,"rgba(6,8,14,0)"),I.addColorStop(.7,"rgba(6,8,14,0.15)"),I.addColorStop(1,"rgba(5,6,11,0.92)"),t.fillStyle=I,t.fillRect(l,d,u,m),t.restore();let k=3+Math.floor(a()*3),w=m*.46,M=p-m*.08;for(let F=0;F<k;F++){let H=(F+1)/(k+1),_=l+u*(.22+H*.56+(a()-.5)*.06);wn(t,_,M,w*(.9+a()*.24),{tone:[8,10,16],alpha:.9,pose:Math.floor(a()*4),rim:te(o+20,.5,.7),rimStrength:.7})}t.fillStyle="#05070d",t.fillRect(l-u*.5,b,u*.5,p-b),t.fillRect(c,b,u*.5,p-b);let C=u*.055+3,L=C*1.35;t.fillStyle="#03050a",t.beginPath(),t.moveTo(l,p),t.lineTo(l-C,p),t.lineTo(l-L,b),t.lineTo(l+u*.012,b),t.closePath(),t.fill(),t.beginPath(),t.moveTo(c,p),t.lineTo(c+C,p),t.lineTo(c+L,b),t.lineTo(c-u*.012,b),t.closePath(),t.fill(),t.fillRect(l-L,b,u+L*2,(p-b)*.12);let R=m*.14,v=b+(p-b)*.12;t.fillStyle="rgba(4,6,12,0.96)";let T=7;t.beginPath(),t.moveTo(l-L,v);for(let F=0;F<=T;F++){let H=l-L+(u+L*2)*F/T;t.quadraticCurveTo(H-(u+L*2)/T/2,v+R,H,v)}t.lineTo(c+L,v),t.lineTo(c+L,b),t.lineTo(l-L,b),t.closePath(),t.fill(),t.fillStyle=`rgba(${s},0.12)`,t.fillRect(l-1.5,v,1.5,p-v),t.fillRect(c,v,1.5,p-v),t.fillStyle="#0b0f18",t.fillRect(l-C,p-m*.05,u+C*2,m*.05+3);let E=t.createLinearGradient(0,p-m*.05,0,p+m*.12);E.addColorStop(0,`rgba(255,206,140,${(.5*r).toFixed(3)})`),E.addColorStop(1,"rgba(255,206,140,0)"),t.fillStyle=E,t.fillRect(l-C,p-m*.05,u+C*2,m*.2);let A=3+Math.floor(a()*2);for(let F=0;F<A;F++){let H=(F+1)/(A+1),_=l+u*(H+(a()-.5)*.08),G=V(Math.min(62,i+26)),X=(a()-.5)*u*.16;fi(t,_,G,_+X,p,4,u*.09,s,.16*(.7+r*.5)),In(t,_,G,2.4,s)}}function Cl(t,e,i,n,r,o,s){let a=Math.min(e*.6,Math.max(3,n.voidRadiusM)),l=Math.min(55,Math.atan2(a,e)*180/Math.PI),c=q/2,d=1.2,p=Math.max(e*.45,e-a),u=e+a,m=Math.atan2(d-i,p)*180/Math.PI,b=Math.atan2(d-i,u)*180/Math.PI,f=Math.atan2(-i,p)*180/Math.PI,h=V(m),g=V(b),S=V(f),y=rt(l)-c,x=Math.max(6,(h-g)/2),I=(h+g)/2,k=t.createRadialGradient(c,S,4,c,S,y*2.6);k.addColorStop(0,`rgba(255,206,150,${(.2*r).toFixed(3)})`),k.addColorStop(.5,"rgba(150,140,190,0.08)"),k.addColorStop(1,"rgba(40,44,60,0)"),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=k,t.fillRect(c-y*2.6,g-x,y*5.2,S-g+x+40),t.restore(),t.fillStyle="#0c1019",t.beginPath(),t.moveTo(c-y,I),t.ellipse(c,I,y,x,0,Math.PI,0,!1),t.lineTo(c+y,S),t.ellipse(c,S,y,x,0,0,Math.PI,!1),t.closePath(),t.fill();let w=t.createLinearGradient(0,I,0,S);w.addColorStop(0,`rgba(${o},0.14)`),w.addColorStop(1,"rgba(0,0,0,0)"),t.fillStyle=w,t.fillRect(c-y,I,y*2,S-I);let M=[[{u:-.24,v:.4,lead:!0,pose:3},{u:.34,v:-.04,pose:2},{u:-.52,v:-.38,pose:0}],[{u:.2,v:.34,lead:!0,pose:3},{u:-.3,v:-.08,pose:2}],[{u:-.1,v:.28,lead:!0,pose:1},{u:.44,v:-.2,pose:2},{u:-.46,v:-.14,pose:2},{u:.08,v:-.46,pose:0}]],C=M[Math.floor(s()*M.length)],L=s()<.5?-1:1,R=N=>c+N.u*L*y*.84,v=N=>I+N.v*x*.8,T=C.find(N=>N.lead)??C[0],E=R(T),A=t.createLinearGradient(0,I-x,0,I+x);A.addColorStop(0,"#3d4a72"),A.addColorStop(1,"#232b47"),t.fillStyle=A,t.beginPath(),t.ellipse(c,I,y,x,0,0,O),t.fill();let F=t.createRadialGradient(E,I,2,E,I,y);F.addColorStop(0,`rgba(255,214,160,${(.5*r).toFixed(3)})`),F.addColorStop(1,"rgba(255,214,160,0)"),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=F,t.beginPath(),t.ellipse(c,I,y,x,0,0,O),t.fill(),t.restore(),t.strokeStyle=`rgba(${o},0.7)`,t.lineWidth=2,t.beginPath(),t.ellipse(c,I,y,x,0,0,O),t.stroke();let H=Math.max(24,(S-g)*1.3),_=C.length>=3?3:2;for(let N=0;N<_;N++){let fe=(-.62+N*.52+(s()-.5)*.12)*-L,Me=c+fe*y*.7,ot=I-x*(.45+s()*.18),Be=y*(.07+s()*.04),Si=H*(.26+s()*.12);t.fillStyle="#0a0e18",t.fillRect(Me-Be/2,ot-Si,Be,Si),t.fillStyle=`rgba(${o},0.3)`,t.fillRect(Me-Be/2,ot-Si,Be,1.5)}if(C.length>=3){let N=c-T.u*L*y*.4;t.fillStyle="#0b0f1a",t.beginPath(),t.ellipse(N,I-x*.34,y*.08,x*.1,0,0,O),t.fill(),t.strokeStyle=`rgba(${o},0.35)`,t.lineWidth=1,t.stroke()}for(let N of[...C].sort((fe,Me)=>fe.v-Me.v)){let fe=.82+(N.v+1)*.14;wn(t,R(N),v(N),H*fe*(N.lead?1.06:.92),{tone:[18,21,34],alpha:.95,pose:N.pose,rim:te(40,.72,.8),rimStrength:N.lead?1.4:.9})}let G=V(Math.min(60,b+34)),X=x*1.1+6;t.strokeStyle="rgba(60,68,92,0.85)",t.lineWidth=3,t.beginPath(),t.ellipse(c,G,y*1.15,X,0,0,O),t.stroke();let D=4+Math.floor(s()*3);for(let N=0;N<D;N++){let fe=N/D*O,Me=c+Math.cos(fe)*y*1.15,ot=G+Math.sin(fe)*X;if(Math.sin(fe)>-.2){let Be=c+(s()-.5)*y*.8;fi(t,Me,ot,Be,I,3,y*.32,o,.2*(.7+r*.4))}In(t,Me,ot,3,o)}let z=V(Math.min(52,b+24)),P=Math.max(60,y*.4),$=Math.max(24,P*.34);t.strokeStyle="rgba(70,78,102,0.6)",t.lineWidth=1.5,t.beginPath(),t.moveTo(c-P*.3,z-$/2),t.lineTo(c-P*.16,z-$*2.2),t.moveTo(c+P*.3,z-$/2),t.lineTo(c+P*.16,z-$*2.2),t.stroke(),t.fillStyle="#0d1220",t.fillRect(c-P/2,z-$/2,P,$);let mi=t.createLinearGradient(0,z-$*.3,0,z+$*.42);mi.addColorStop(0,`rgba(${o},0.5)`),mi.addColorStop(1,"rgba(255,214,160,0.32)"),t.fillStyle=mi,t.fillRect(c-P*.42,z-$*.3,P*.84,$*.72),t.fillStyle="rgba(255,214,160,0.55)",t.fillRect(c-P/2,z+$/2-2,P,2);let bi=t.createRadialGradient(c,z,4,c,z,P*1.1);bi.addColorStop(0,`rgba(${o},0.2)`),bi.addColorStop(1,"rgba(0,0,0,0)"),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=bi,t.fillRect(c-P*1.1,z-P*.8,P*2.2,P*1.6);let gi=t.createRadialGradient(c,(G+I)/2,6,c,(G+I)/2,y*1.5);gi.addColorStop(0,`rgba(${o},${(.1*(.6+r*.5)).toFixed(3)})`),gi.addColorStop(1,"rgba(0,0,0,0)"),t.fillStyle=gi,t.fillRect(c-y*1.5,G-40,y*3,I-G+80),t.restore();let bs=c+Math.sign(E-c||1)*y*.5;fi(t,bs,G-X*.4,E,v(T),2.5,y*.16,"255,224,178",.42*(.7+r*.4));let yi=t.createRadialGradient(E,v(T),1,E,v(T),y*.2);yi.addColorStop(0,`rgba(255,228,185,${(.4*r).toFixed(3)})`),yi.addColorStop(1,"rgba(255,228,185,0)"),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=yi,t.beginPath(),t.ellipse(E,v(T),y*.2,x*.24,0,0,O),t.fill(),t.restore()}function Ml(t,e,i,n,r,o,s,a){let l=q/2,c=Math.max(10,n.voidRadiusM),d=Math.max(2,e-c),p=e+c,u=Math.min(78,Math.atan2(c*1.15,e)*180/Math.PI),m=Math.atan2(-i,d)*180/Math.PI,b=Math.atan2(-i,p)*180/Math.PI,f=V(m),h=V(b),g=rt(u)-l,S=(f+h)/2,y=Math.max(10,(f-h)/2),x=t.createRadialGradient(l,S,4,l,S,g);x.addColorStop(0,"#e8f0fb"),x.addColorStop(.7,"#b9c9e2"),x.addColorStop(1,"#8fa3c4"),t.save(),t.beginPath(),t.ellipse(l,S,g,y,0,0,O),t.clip(),t.fillStyle=x,t.fillRect(l-g,S-y,g*2,y*2),t.strokeStyle="rgba(90,120,170,0.5)",t.lineWidth=3,t.beginPath(),t.moveTo(l,S-y),t.lineTo(l,S+y),t.moveTo(l-g*.5,S-y),t.lineTo(l-g*.5,S+y),t.moveTo(l+g*.5,S-y),t.lineTo(l+g*.5,S+y),t.stroke(),t.strokeStyle="rgba(180,90,110,0.45)",t.beginPath(),t.ellipse(l,S,y*.9,y*.5,0,0,O),t.stroke(),t.restore(),t.strokeStyle="rgba(210,225,245,0.6)",t.lineWidth=2.5,t.beginPath(),t.ellipse(l,S,g,y,0,0,O),t.stroke(),t.fillStyle="rgba(20,26,40,0.8)";for(let R=0;R<5;R++){let v=l+(a()-.5)*g*1.4,T=S+(a()-.5)*y*1.1,E=Math.max(2,y*.06);t.beginPath(),t.ellipse(v,T,E*.6,E,0,0,O),t.fill()}let I=t.createRadialGradient(l,S,4,l,S,g*1.4);I.addColorStop(0,"rgba(200,220,255,0.12)"),I.addColorStop(1,"rgba(200,220,255,0)"),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=I,t.fillRect(l-g*1.4,h-y,g*2.8,f-h+y*2),t.restore();let k=V(Math.min(66,b+60)),w=Math.max(80,g*.7),M=w*.5,C=t.createRadialGradient(l,k,4,l,k,w*1.6);C.addColorStop(0,`rgba(${s},0.3)`),C.addColorStop(1,`rgba(${s},0)`),t.save(),t.globalCompositeOperation="lighter",t.fillStyle=C,t.fillRect(l-w*1.6,k-w*1.2,w*3.2,w*2.4),t.restore(),t.fillStyle="#080b12",t.beginPath(),t.moveTo(l-w/2,k-M/2),t.lineTo(l+w/2,k-M/2),t.lineTo(l+w*.6,k),t.lineTo(l+w/2,k+M/2),t.lineTo(l-w/2,k+M/2),t.lineTo(l-w*.6,k),t.closePath(),t.fill();let L=o;for(let R=0;R<3;R++){let v=te(L+R*30,.5,.5);t.fillStyle=`rgba(${v[0]},${v[1]},${v[2]},0.75)`;let T=w*.26;t.fillRect(l-w*.42+R*(T+w*.06),k-M*.32,T,M*.64)}t.fillStyle=`rgba(${s},0.9)`;for(let R=0;R<8;R++){let v=l-w*.6+w*1.2*R/7;t.beginPath(),t.arc(v,k+M*.62,2.4,0,O),t.fill()}}function Pl(t,e,i,n,r,o,s,a,l,c){let d=e.sectionId,p=!1,u=[];for(let f of i){if(f.id===e.id)continue;let h=f.x-e.x,g=f.y-e.y,S=Math.hypot(h,g)*Pt;if(d&&f.sectionId===d&&S<3&&h*s+g*a>0&&(p=!0),S<.3||S>32)continue;let x=((Math.atan2(h,-g)-r)*180/Math.PI+540)%360-180,I=l?(f.eyeHeightM??W)-o:0,k=Math.atan2(I-.28,S)*180/Math.PI;if(k>10&&S>5)continue;let w=0;for(let L=0;L<f.id.length;L++)w=w*31+f.id.charCodeAt(L)&65535;let M=.9+(w&15)/40,C=Math.min(78,Math.atan2(.16,S)*180/Math.PI*bl*M);C<1.2||u.push({hx:rt(x),hy:V(k),r:C,d:S,hash:w})}u.sort((f,h)=>h.d-f.d);let m=[];{let f=[...u].sort((S,y)=>S.hy-y.hy),h=[],g=()=>{if(!h.length)return;let S=h.reduce((I,k)=>I+k.d,0)/h.length,y=h.reduce((I,k)=>I+k.hy,0)/h.length,x=h.reduce((I,k)=>I+k.r,0)/h.length;m.push({figs:h.sort((I,k)=>k.d-I.d),d:S,hy:y,r:x}),h=[]};for(let S of f){let y=h[h.length-1];y&&Math.abs(S.hy-y.hy)>Math.max(5,(y.r+S.r)/2*1.7)&&g(),h.push(S)}g()}m.sort((f,h)=>h.d-f.d);let b=[[22,26,40],[28,27,42],[24,31,46],[31,30,47],[20,24,36]];for(let f of m){if(f.figs.length>=3&&f.r>=1.6&&f.r<26){let h=[],g=[...f.figs].sort((x,I)=>x.hx-I.hx),S=[];for(let x of g){let I=S[S.length-1];I&&x.hx-I.hx>Math.max(14,x.r*7)&&(S.length>=3&&h.push(S),S=[]),S.push(x)}S.length>=3&&h.push(S);let y=Math.min(.42,.5*(1-f.d/42));if(y>.05){t.fillStyle=`rgba(15, 19, 31, ${y.toFixed(3)})`;for(let x of h){let I=x[0].hx-f.r*1.6,k=x[x.length-1].hx+f.r*1.6;t.beginPath(),t.roundRect(I,f.hy+f.r*.8,k-I,f.r*2.4,f.r*.8),t.fill()}}}for(let h of f.figs){let g=h.d<12?.95:h.d<17?Math.max(.66,.95-(h.d-12)/18):Math.max(.3,.68-(h.d-17)/34),S=Math.round((1-Math.min(1,h.d/16))*10),y=[14+(h.hash>>4&6)+S,17+(h.hash>>4&6)+S,25+(h.hash>>4&6)+S],x=b[h.hash%b.length],I=[x[0]+S,x[1]+S,x[2]+S];if(h.r>=13){let k=h.d<9?.16*(1-h.d/9)+(c.mode==="proscenium"?.06:0):0;wl(t,h.hx,h.hy,h.r,{tone:y,clothing:I,alpha:g,tilt:((h.hash>>2&7)-3.5)*.018,shoulderK:1.72+(h.hash>>5&7)/22,hair:h.hash%kl,rim:k,turn:((h.hash>>8&7)-3.5)*.034,lean:((h.hash>>10&3)-1.5)*.09})}else h.r>=5.5?Il(t,h.hx,h.hy,h.r,I,y,g):(t.fillStyle=`rgba(${y[0]},${y[1]},${y[2]},${g.toFixed(3)})`,t.beginPath(),t.arc(h.hx,h.hy,h.r,0,O),t.fill(),t.beginPath(),t.ellipse(h.hx,h.hy+h.r*1.4,h.r*1.85,h.r*.95,0,Math.PI,0,!0),t.fill())}}if(p){let f=V(-34);t.fillStyle="rgba(6, 8, 14, 0.92)",t.fillRect(0,f,q,pe-f),t.fillStyle="rgba(24, 30, 46, 0.9)";let h=16;for(let g=0;g<h;g++){let S=(g+.5)/h*q;t.beginPath(),t.ellipse(S,f+6,q/h*.42,22,0,Math.PI,0,!0),t.fill()}}}var ne=480,nt=270,xn=50,Ae=30,ss=t=>(t+xn)/(2*xn)*ne,Mt=t=>(Ae-t)/(2*Ae)*nt;function Rl(t,e,i){let n=document.createElement("canvas");n.width=ne,n.height=nt;let r=n.getContext("2d"),o=e.x-t.x,s=e.y-t.y,a=Math.max(2,Math.hypot(o,s)*Pt),l=ls(as(`${t.id}|${Math.round(e.x)},${Math.round(e.y)}`)),c=210+l()*150,d=te(220+(l()-.5)*60,.55,.82),p=`${d[0]},${d[1]},${d[2]}`,u=r.createLinearGradient(0,0,0,nt);u.addColorStop(0,"#080b12"),u.addColorStop(.44,"#151c32"),u.addColorStop(.5,"#1d2644"),u.addColorStop(.58,"#161c2e"),u.addColorStop(1,"#131829"),r.fillStyle=u,r.fillRect(0,0,ne,nt);let m=t.eyeHeightM??W,b=yn(m,a),f=Math.min(xn-2,Math.atan2(4,a)*180/Math.PI),h=Math.min(Ae-2,b.topPitch),g=Math.max(-Ae+2,b.basePitch),S=ss(-f),y=ss(f),x=Mt(h),I=Mt(g),k=y-S,w=I-x,M=Math.max(.35,Math.min(1,1-(a-6)/60)),C=Mt(Math.min(Ae-1,h+8)),L=r.createRadialGradient(ne/2,(x+I)/2,4,ne/2,(x+I)/2,k*1.15);L.addColorStop(0,"rgba(255,214,150,0.34)"),L.addColorStop(.28,"rgba(150,150,230,0.3)"),L.addColorStop(.6,"rgba(99,102,241,0.12)"),L.addColorStop(1,"rgba(99,102,241,0)"),r.fillStyle=L,r.fillRect(S-k*.6,x-w*1.2,k*2.2,w*3.4);let R=te(c,.62,.55),v=te(c+40,.7,.5),T=te(c+70,.78,.52);r.save(),r.beginPath(),r.rect(S,x,k,w),r.clip();let E=r.createLinearGradient(0,x,0,I);E.addColorStop(0,`rgb(${R[0]},${R[1]},${R[2]})`),E.addColorStop(.5,`rgb(${v[0]},${v[1]},${v[2]})`),E.addColorStop(1,`rgb(${T[0]},${T[1]},${T[2]})`),r.globalAlpha=.8,r.fillStyle=E,r.fillRect(S,x,k,w),r.globalAlpha=1;let A=r.createRadialGradient(ne/2,(x+I)/2,k*.12,ne/2,(x+I)/2,k*.6);A.addColorStop(0,"rgba(6,8,14,0)"),A.addColorStop(.7,"rgba(6,8,14,0.15)"),A.addColorStop(1,"rgba(5,6,11,0.9)"),r.fillStyle=A,r.fillRect(S,x,k,w),r.restore();let F=3,H=I-w*.08;for(let D=0;D<F;D++){let z=(D+1)/(F+1);wn(r,S+k*(.24+z*.52),H,w*.46*(.9+l()*.24),{tone:[8,10,16],alpha:.9,pose:Math.floor(l()*4),rim:te(c+20,.5,.7),rimStrength:.7})}r.fillStyle="#05070d",r.fillRect(S-k*.5,C,k*.5,I-C),r.fillRect(y,C,k*.5,I-C);let _=k*.05+2,G=_*1.35;r.fillStyle="#03050a",r.beginPath(),r.moveTo(S,I),r.lineTo(S-_,I),r.lineTo(S-G,C),r.lineTo(S+k*.012,C),r.closePath(),r.fill(),r.beginPath(),r.moveTo(y,I),r.lineTo(y+_,I),r.lineTo(y+G,C),r.lineTo(y-k*.012,C),r.closePath(),r.fill(),r.fillRect(S-G,C,k+G*2,(I-C)*.13),r.fillStyle=`rgba(${p},0.12)`,r.fillRect(S-1.2,C,1.2,I-C),r.fillRect(y,C,1.2,I-C),r.fillStyle="#0b0f18",r.fillRect(S-_,I-w*.05,k+_*2,w*.05+2);let X=r.createLinearGradient(0,I-w*.05,0,I+w*.14);X.addColorStop(0,`rgba(255,206,140,${(.5*M).toFixed(3)})`),X.addColorStop(1,"rgba(255,206,140,0)"),r.fillStyle=X,r.fillRect(S-_,I-w*.05,k+_*2,w*.22);for(let D=0;D<3;D++){let z=(D+1)/4,P=S+k*z,$=Mt(Math.min(Ae-1,h+20));fi(r,P,$,P+(l()-.5)*k*.14,I,3,k*.09,p,.17*M),In(r,P,$,1.8,p)}r.fillStyle=`rgba(${p},0.75)`;for(let D=0;D<8;D++)r.beginPath(),r.arc((D+.5)/8*ne,Mt(Ae-4-D%2*3),2.2,0,O),r.fill();r.fillStyle="rgba(10,13,20,0.9)",r.fillRect(0,nt-26,ne,26),r.fillStyle="rgba(30,37,54,0.9)";for(let D=0;D<9;D++){let z=D*(ne/9)+ne/18;r.beginPath(),r.ellipse(z,nt-22,ne/9*.4,15,0,Math.PI,0,!0),r.fill()}return{url:n.toDataURL("image/jpeg",.8),distanceM:Math.round(a)}}var Ol={es:()=>Promise.resolve().then(()=>(ds(),cs)).then(t=>({default:t.es})),de:()=>Promise.resolve().then(()=>(hs(),us)).then(t=>({default:t.de})),fr:()=>Promise.resolve().then(()=>(fs(),ps)).then(t=>({default:t.fr}))},ms=new Set(["en"]);async function Fl(t){let e=$i(t);if(e==="en"||ms.has(e))return ft(e),e;try{let i=await Ol[e]();return ft(e,i.default),ms.add(e),e}catch{return ft("en"),"en"}}0&&(module.exports={ACCESSIBILITY_RING_COLOR,ACCESSIBILITY_TYPES,CHART_STORAGE_KEY,CURRENCY_CHOICES,DEFAULT_CURRENCY,LABEL_STYLE_MAX_SIZE,LABEL_STYLE_MIN_SIZE,MAX_EVENT_INVENTORY,MAX_GA_CAPACITY,PickerController,PickerSelectionError,RENDERED_QUALITY_REPORT_VERSION,SEAT_COMMERCIAL_MARKS,SUPPORTED_LOCALES,SURROUNDINGS_SHAPE_ROLES,SeatmapRenderer,TIER_HEIGHT_M,UNGROUPED_ID,accessibilityMeta,accessibilityRingColor,allObjects,applyHidden,chartBounds,computeSections,createRenderer,currencyExponent,currencySymbol,expandBooth,expandChart,expandRow,expandRowSlots,expandTable,expandTableSlots,floorObjects,floorOverviewTranslations,floorsOf,formatDate,formatMinor,formatMoney,fromMinorUnits,gaAreasOf,gaInventorySegments,gaUnitLabel,gaUnitLabels,generateSeatPanorama,generateSeatThumb,getLocale,growJoinedGAInventory,hiddenObjectIds,inspectRenderedQualityEvidence,isGaUnitLabel,isSectionHidden,layerOf,layoutFloorOverview,loadLocale,objectCenter,owningSectionForObject,pointInPolygon,pointInPolygonWithHoles,polygonLabelPoint,resolveLocale,rowInventoryCount,rowSeatPositions,seatCommercialMeta,sectionGeometry,setLocale,setMoneyLocale,setStringOverrides,stackFloors,t,tCount,tableInventoryCount,tableSeatCountsBySide,translateObject,validGAInventorySegments});
|