{"version":3,"file":"chunk-n88v7g9h.js","sources":["packages/sports/libs/content-distribution/feature/src/cds-push-store.service.ts","packages/sports/libs/common/core/utils/css-formatters/src/css-url-formatter/to-css-url.ts","packages/sports/libs/common/core/utils/css-formatters/src/css-url-formatter/to-css-url.pipe.ts","packages/sports/web/app/src/horse-racing-shared/model/day-of-race.model.ts","packages/sports/web/app/src/horse-racing-shared/services/racing-api.service.ts","packages/sports/web/app/src/horse-racing-shared/services/horse-racing-api.service.ts","packages/sports/web/app/src/racing/common/fixture-update.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { MessageEnvelope } from '@cds/push';\nimport { Page } from '@frontend/vanilla/core';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { finalize, share } from 'rxjs/operators';\n\nimport { BaseSubscription, CdsPushService, FixtureAllSubscription, FixtureSlimSubscription } from './cds-push.service';\n\nexport interface SubscriptionFixtureLike {\n id: string;\n context: string;\n}\n\nexport enum SubscriptionKind {\n Full,\n Slim,\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CdsPushStoreService {\n private subscriptions: Map> = new Map>();\n\n constructor(\n private cdsPush: CdsPushService,\n private page: Page,\n ) {}\n\n subscribeToFixture(fixture: SubscriptionFixtureLike, kind: SubscriptionKind = SubscriptionKind.Full): Observable {\n let subscription = this.subscriptionFactory(fixture, kind, () => {});\n const observables: Observable[] = [];\n\n for (const key of subscription.key) {\n if (this.subscriptions.has(key)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n observables.push(this.subscriptions.get(key)!);\n } else {\n const subject = new Subject();\n subscription = this.subscriptionFactory(fixture, kind, (message) => {\n subject.next(message);\n });\n this.cdsPush.subscribe(subscription);\n const observable = subject.asObservable().pipe(\n finalize(() => {\n this.subscriptions.delete(key);\n this.cdsPush.unsubscribe(subscription);\n }),\n share(),\n );\n\n this.subscriptions.set(key, observable);\n observables.push(observable);\n }\n }\n\n if (observables.length === 0) {\n throw new Error('Observables are empty. Subscription Key might be set incorrectly.');\n }\n\n return merge(...observables);\n }\n\n private subscriptionFactory(\n fixture: SubscriptionFixtureLike,\n kind: SubscriptionKind,\n callback: (message: MessageEnvelope) => void,\n ): BaseSubscription {\n switch (kind) {\n case SubscriptionKind.Full:\n return new FixtureAllSubscription([fixture.context], fixture.id, this.page.lang, callback);\n case SubscriptionKind.Slim:\n return new FixtureSlimSubscription([fixture.context], fixture.id, this.page.lang, callback);\n }\n }\n}\n","/**\n * helper function that wraps an image URL with CSS `url()` syntax.\n *\n */\nexport function toCSSUrl(value?: string): string {\n return value ? `url(${value})` : '';\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { toCSSUrl } from './to-css-url';\n\n/**\n * Angular pipe that wraps an image URL with CSS `url()` syntax.\n *\n * This pipe is useful for formatting image URLs so they can be directly used\n * in CSS styles, such as for setting background images.\n *\n * @pipe\n * @name ToCssUrlPipe\n * @usageNotes\n * This pipe can be used in Angular templates to apply CSS-compatible\n * `url()` syntax to image URLs:\n *\n * ```html\n *
\n * ```\n *\n * @example\n * // In a template:\n *
\n * will be
\n *\n */\n\n@Pipe({ name: 'msToCssUrl', standalone: true })\nexport class ToCssUrlPipe implements PipeTransform {\n transform(value: string): string {\n return toCSSUrl(value);\n }\n}\n","import { DayOfRaceRegion, DayOfRaceResponse } from '@cds/betting-offer/domain-specific/horse-racing';\nimport { WinGameFixture, WinGameFixturePreview, toRacingFixturePreview } from '@frontend/sports/racing/feature/models';\n\nexport interface DayOfRaceModel {\n fixtures: WinGameFixturePreview[];\n regions: { [pos: number]: DayOfRaceRegion[] };\n}\n\nexport interface TodayRaceModel extends DayOfRaceModel {\n nextFixtures: TRacePredictor[];\n}\n\nexport function toDayOfRaceModel(dto: DayOfRaceResponse): DayOfRaceModel {\n return {\n fixtures: dto.fixtures.map(toRacingFixturePreview),\n regions: dto.regions,\n };\n}\n","import { Fixture } from '@cds/betting-offer';\nimport { DayOfRaceDate, DayOfRaceResponse, RaceEntity, RacingProviders, TimeGroupedMeetings } from '@cds/betting-offer/domain-specific/horse-racing';\nimport { OfferMapping } from '@cds/query-objects';\nimport { DetailedCreateFactory, DetailedGroupingFactory } from '@frontend/sports/betting-offer/feature/fixture-factories';\nimport { OfferGroupingService } from '@frontend/sports/betting-offer/feature/offer-grouping';\nimport { RacingConfig } from '@frontend/sports/common/client-config-data-access';\nimport { BaseCdsApi, BaseCdsApiFactory } from '@frontend/sports/content-distribution/feature';\nimport {\n NextRaceFilters,\n RacingOptionMarketTypes,\n WinGameFixture,\n WinGameFixturePreview,\n toWinGameFixture,\n} from '@frontend/sports/racing/feature/models';\nimport { orderBy } from 'lodash-es';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\n\nimport { DayOfRaceModel, toDayOfRaceModel } from '../model/day-of-race.model';\n\nexport abstract class AbstractRacingService {\n cdsApi: BaseCdsApi;\n constructor(\n cdsApiServiceFactory: BaseCdsApiFactory,\n protected racingConfig: RacingConfig,\n protected endpointUrl: string,\n protected offerGroupingService: OfferGroupingService,\n protected createFactory: DetailedCreateFactory,\n protected groupingFactory: DetailedGroupingFactory,\n ) {\n this.cdsApi = cdsApiServiceFactory({ endpoint: endpointUrl });\n }\n\n getDayOfRaceFixtures(dayOfRace: DayOfRaceDate): Observable {\n return this.cdsApi.get('/day-of-race', { day: dayOfRace, raceProvider: this.provider() }).pipe(\n map((value) => {\n return value ? toDayOfRaceModel(value) : undefined;\n }),\n );\n }\n\n getMeeting(meetingId: number, day: DayOfRaceDate): Observable {\n return this.cdsApi.get('/meeting', { meeting: meetingId, day }).pipe(\n map((fixtures) => {\n return fixtures ? fixtures.map(toWinGameFixture) : [];\n }),\n catchError(() => {\n return of([]);\n }),\n );\n }\n\n getMeetingFixtures(meetingId: number, dayOfRace: DayOfRaceDate): Observable {\n return this.cdsApi\n .get(`/meeting/fixtures`, {\n meeting: meetingId,\n day: dayOfRace,\n marketTypes: RacingOptionMarketTypes.WinEw,\n raceProvider: this.provider(),\n offerMapping: OfferMapping.Filtered,\n })\n .pipe(\n switchMap((fixtures) => {\n if (!fixtures) {\n return of([]);\n }\n return this.mapFixtures(fixtures);\n }),\n catchError(() => {\n return of([]);\n }),\n );\n }\n\n getMeetings(): Observable {\n const empty: TimeGroupedMeetings = {\n byDay: {\n [DayOfRaceDate.Today.toLowerCase()]: [],\n [DayOfRaceDate.Tomorrow.toLowerCase()]: [],\n },\n };\n\n return this.cdsApi.get('/meetings').pipe(\n map((model) => (model ? model : empty)),\n catchError(() => {\n return of(empty);\n }),\n );\n }\n\n getNextFixtures(nextCount: number = 0, regionIds?: string): Observable {\n const fixturesCount = nextCount || this.racingConfig.nextFixturesCount;\n let resourceUrl = `/next?raceprovider=${this.provider()}&nextFixturesCount=${fixturesCount}&marketTypes=WinEW&offerMapping=Filtered`;\n\n if (regionIds) {\n resourceUrl += `®ionIds=${regionIds}`;\n }\n\n return this.cdsApi.get(resourceUrl).pipe(\n switchMap((value) => {\n if (value && value.length > 0) {\n return this.buildOptionsForNextFixtures(value, regionIds ? NextRaceFilters.Ukireland : NextRaceFilters.All);\n }\n return of([] as WinGameFixture[]);\n }),\n catchError(() => of([] as WinGameFixture[])),\n );\n }\n\n getFixture(fixtureId: string): Observable {\n return this.cdsApi.get('/fixtures', { fixtureIds: [fixtureId], raceProvider: this.provider() }).pipe(\n switchMap((fix) => {\n if (!fix || fix.length === 0) {\n return of({} as WinGameFixture);\n }\n return this.mapFixture(fix[0]);\n }),\n catchError(() => of({} as WinGameFixture)),\n );\n }\n\n updateFixture(winGameFixture: WinGameFixture): Observable {\n return this.offerGroupingService\n .getFixtureGrouping(winGameFixture.sport.id, '')\n .pipe(map((grouping) => this.processFixture(winGameFixture, grouping)));\n }\n\n protected mapFixtures(races: RaceEntity[]): Observable {\n if (races.length === 0) {\n return of([]);\n }\n\n const sportId = races[0].fixture.sport.id;\n\n return this.offerGroupingService.getFixtureGrouping(sportId, 'any').pipe(\n map((grouping) => {\n return races.map((race) => {\n const winGameFixture = this.ToFixture(race) as WinGameFixture;\n return this.processFixture(winGameFixture, grouping);\n });\n }),\n );\n }\n\n private processFixture(winGameFixture: WinGameFixture, grouping: any): WinGameFixture {\n const fixture = winGameFixture as unknown as Fixture;\n\n if (grouping) {\n const optionGroups = this.createFactory.createOptionGroups(fixture, [], grouping, undefined, false, false, false);\n const optionSets = this.groupingFactory.getOptionSets(optionGroups, grouping, fixture.source);\n\n return {\n ...winGameFixture,\n optionGroups,\n optionSets,\n };\n }\n return winGameFixture;\n }\n\n mapFixture(race: RaceEntity): Observable {\n return this.mapFixtures([race]).pipe(\n map((fixtures) => {\n return fixtures[0] || null;\n }),\n );\n }\n\n getFixtures(interval?: { from?: string; to?: string }): Observable {\n return this.cdsApi.get('/race-fixtures', { ...interval, raceProvider: this.provider() }).pipe(\n map((value) => {\n return value ? toDayOfRaceModel(value) : undefined;\n }),\n );\n }\n\n buildOptionsForNextFixtures(fixtures: RaceEntity[], filter: NextRaceFilters): Observable {\n return this.mapFixtures(fixtures).pipe(map((winGameFixtures) => winGameFixtures.map((value) => ({ ...value, nextRaceFilter: filter }))));\n }\n\n getTodaysResult(regionIds?: string): Observable {\n const regionIdsQueryParam = regionIds ? `®ionIds=${regionIds}` : '';\n\n return this.cdsApi.post(`/today-result?marketTypes=WinEW&offerMapping=Filtered${regionIdsQueryParam}`).pipe(\n switchMap((fixtures) => {\n if (!fixtures || fixtures.length === 0) {\n return of([]);\n }\n return this.mapFixtures(fixtures);\n }),\n map((fixtures) => {\n return fixtures ? orderBy(fixtures, (f) => f.startDate, 'desc') : [];\n }),\n );\n }\n\n abstract ToFixture(raceEntity: RaceEntity): WinGameFixture;\n abstract provider(): RacingProviders;\n}\n","import { Inject, Injectable } from '@angular/core';\n\nimport { RaceEntity, RacingProviders } from '@cds/betting-offer/domain-specific/horse-racing';\nimport { HorsePerformanceData } from '@cds/betting-offer/domain-specific/horse-racing/timeform';\nimport { DetailedCreateFactory, DetailedGroupingFactory } from '@frontend/sports/betting-offer/feature/fixture-factories';\nimport { OfferGroupingService } from '@frontend/sports/betting-offer/feature/offer-grouping';\nimport { RacingConfig } from '@frontend/sports/common/client-config-data-access';\nimport { BaseCdsApiFactory, CDS_API_FACTORY } from '@frontend/sports/content-distribution/feature';\nimport { WinGameFixture, toHorseRacingTimeFormFixture } from '@frontend/sports/racing/feature/models';\nimport { Observable, catchError, map, of } from 'rxjs';\n\nimport { AbstractRacingService } from './racing-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HorseRacingApiService extends AbstractRacingService {\n ToFixture(raceEntity: RaceEntity): WinGameFixture {\n return toHorseRacingTimeFormFixture(raceEntity);\n }\n\n provider(): RacingProviders {\n return RacingProviders.Timeform;\n }\n\n constructor(\n @Inject(CDS_API_FACTORY) cdsApiServiceFactory: BaseCdsApiFactory,\n protected override racingConfig: RacingConfig,\n protected override offerGroupingService: OfferGroupingService,\n protected override createFactory: DetailedCreateFactory,\n protected override groupingFactory: DetailedGroupingFactory,\n ) {\n super(cdsApiServiceFactory, racingConfig, '/horse-racing', offerGroupingService, createFactory, groupingFactory);\n }\n\n getHorsePerformance(fixtureId: string, participantId: number): Observable {\n const empty: HorsePerformanceData[] = [];\n\n return this.cdsApi\n .get<{ [participantId: number]: HorsePerformanceData[] }>(`/horse-performance/${fixtureId}`, {\n participantId: [participantId],\n })\n .pipe(\n map((value) => {\n return value ? value[participantId] || empty : empty;\n }),\n catchError(() => {\n return of(empty);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ParticipantPriceStatus } from '@cds/betting-offer';\nimport { MessageEnvelope } from '@cds/push';\nimport {\n CdsPushStoreService,\n isFixtureSlimUpdateEnvelope,\n isOptionMarketEnvelope,\n isParticipantUpdateEnvelope,\n updateFixture,\n updateFixtureOptionMarkets,\n updateFixtureParticipants,\n} from '@frontend/sports/content-distribution/feature';\nimport { WinGameFixture, createParticipantWithRacingPostData, createParticipantWithTimeFormData } from '@frontend/sports/racing/feature/models';\nimport { Observable, scan, switchMap } from 'rxjs';\n\nimport { HorseRacingApiService } from '../../horse-racing-shared/services/horse-racing-api.service';\nimport { HorsesFixtureHelper } from '../../horse-racing-shared/services/horses-fixture-helper.service';\nimport { HorsesFixturePricingHelper } from '../../horse-racing-shared/services/horses-fixture-pricing-helper.service';\n\n@Injectable()\nexport class FixtureUpdateService {\n constructor(\n private horseRacingService: HorseRacingApiService,\n protected horsesFixturePricingHelper: HorsesFixturePricingHelper,\n private cdsPushStoreService: CdsPushStoreService,\n ) {}\n\n handleFixtureUpdates(fixture: WinGameFixture): Observable {\n return this.cdsPushStoreService.subscribeToFixture(fixture).pipe(\n scan((accumulateFixture, message) => this.updatedFixtureFromMessage(accumulateFixture, message), fixture),\n switchMap((updatedFixture) => this.updateOptionGroupsAndSets(updatedFixture)),\n );\n }\n\n private updateFixtureParticipants(fixture: WinGameFixture, message: MessageEnvelope): WinGameFixture {\n if (fixture.timeform) {\n return updateFixtureParticipants(fixture, message, {\n creator: createParticipantWithTimeFormData,\n });\n } else {\n return updateFixtureParticipants(fixture, message, {\n creator: createParticipantWithRacingPostData,\n });\n }\n }\n\n private updateFixtureSlim(fixture: WinGameFixture, message: MessageEnvelope): WinGameFixture {\n return updateFixture(fixture, message);\n }\n\n shouldCompleteFixtureResult(updatedFixture: WinGameFixture): boolean | undefined {\n return (\n !HorsesFixtureHelper.isTradable(updatedFixture) ||\n (!updatedFixture.isOptionBet &&\n updatedFixture.participants.flatMap((p) => p.options).every((o) => o.participantPriceStatus !== ParticipantPriceStatus.Visible)) ||\n (updatedFixture.isOptionBet && updatedFixture.addons.isRaceOff)\n );\n }\n\n isRelevantMessage(message: MessageEnvelope): boolean {\n return isParticipantUpdateEnvelope(message) || isFixtureSlimUpdateEnvelope(message) || isOptionMarketEnvelope(message);\n }\n\n private updateOptionGroupsAndSets(fixture: WinGameFixture): Observable {\n return this.horseRacingService.updateFixture(fixture);\n }\n\n private updatedFixtureFromMessage(fixture: WinGameFixture, message: MessageEnvelope): WinGameFixture {\n if (!this.isRelevantMessage(message) || message.payload.fixtureId !== fixture.id) {\n return fixture;\n }\n\n if (isParticipantUpdateEnvelope(message)) {\n fixture = this.updateFixtureParticipants(fixture, message);\n }\n\n if (isOptionMarketEnvelope(message)) {\n fixture = updateFixtureOptionMarkets(fixture, message);\n }\n\n if (isFixtureSlimUpdateEnvelope(message)) {\n fixture = this.updateFixtureSlim(fixture, message);\n }\n\n return fixture;\n }\n}\n"],"names":["SubscriptionKind","CdsPushStoreService","constructor","cdsPush","page","subscriptions","Map","subscribeToFixture","fixture","kind","Full","subscription","subscriptionFactory","observables","key","has","push","get","subject","Subject","message","next","subscribe","observable","asObservable","pipe","finalize","delete","unsubscribe","share","set","length","Error","merge","callback","FixtureAllSubscription","context","id","lang","Slim","FixtureSlimSubscription","ɵɵinject","CdsPushService","Page","h","factory","ɵfac","providedIn","_CdsPushStoreService","toCSSUrl","value","ToCssUrlPipe","transform","pure","standalone","_ToCssUrlPipe","toDayOfRaceModel","dto","fixtures","map","toRacingFixturePreview","regions","AbstractRacingService","cdsApiServiceFactory","racingConfig","endpointUrl","offerGroupingService","createFactory","groupingFactory","cdsApi","endpoint","getDayOfRaceFixtures","dayOfRace","day","raceProvider","provider","undefined","getMeeting","meetingId","meeting","toWinGameFixture","catchError","of","getMeetingFixtures","marketTypes","RacingOptionMarketTypes","WinEw","offerMapping","switchMap","mapFixtures","getMeetings","empty","byDay","toLowerCase","model","getNextFixtures","nextCount","regionIds","fixturesCount","nextFixturesCount","resourceUrl","buildOptionsForNextFixtures","NextRaceFilters","Ukireland","All","getFixture","fixtureId","fixtureIds","fix","mapFixture","updateFixture","winGameFixture","getFixtureGrouping","sport","grouping","processFixture","races","sportId","race","ToFixture","optionGroups","createOptionGroups","optionSets","getOptionSets","source","__spreadProps","__spreadValues","getFixtures","interval","filter","winGameFixtures","nextRaceFilter","getTodaysResult","regionIdsQueryParam","post","orderBy","f","startDate","HorseRacingApiService","raceEntity","toHorseRacingTimeFormFixture","getHorsePerformance","participantId","CDS_API_FACTORY","RacingConfig","OfferGroupingService","DetailedCreateFactory","DetailedGroupingFactory","_HorseRacingApiService","FixtureUpdateService","horseRacingService","horsesFixturePricingHelper","cdsPushStoreService","handleFixtureUpdates","scan","accumulateFixture","updatedFixtureFromMessage","updatedFixture","updateOptionGroupsAndSets","updateFixtureParticipants","timeform","creator","createParticipantWithTimeFormData","createParticipantWithRacingPostData","updateFixtureSlim","shouldCompleteFixtureResult","HorsesFixtureHelper","isTradable","isOptionBet","participants","flatMap","p","options","every","o","participantPriceStatus","addons","isRaceOff","isRelevantMessage","isParticipantUpdateEnvelope","isFixtureSlimUpdateEnvelope","isOptionMarketEnvelope","payload","updateFixtureOptionMarkets","HorsesFixturePricingHelper","_FixtureUpdateService"],"mappings":"wgBAcA,IAAYA,CAAZ,CAAA,SAAYA,CAAgB,CAAA,CACxBA,OAAAA,CAAAA,CAAAA,CAAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CACAA,CAAAA,CAAAA,CAAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAFQA,CAAAA,CAGZ,CAHYA,CAAAA,CAAAA,EAAgB,EAAA,EAQfC,CAAmB,CAAA,CAAA,IAAA,CAA1B,IAAOA,CAAP,CAAA,MAAOA,CAAmB,CAG5BC,YACYC,CACAC,CAAAA,CAAAA,CAAU,CADV,IAAA,CAAAD,OAAAA,CAAAA,CAAAA,CACA,IAAAC,CAAAA,IAAAA,CAAAA,EAJJ,IAAAC,CAAAA,aAAAA,CAA0D,IAAIC,IAKnE,CAEHC,kBAAAA,CAAmBC,CAAkCC,CAAAA,CAAAA,CAAyBT,EAAiBU,IAAI,CAAA,CAC/F,IAAIC,CAAAA,CAAe,IAAKC,CAAAA,mBAAAA,CAAoBJ,CAASC,CAAAA,CAAAA,CAAM,IAAK,EAAG,CAC7DI,CAAAA,CAAAA,CAA6C,EAAA,CAEnD,IAAWC,IAAAA,CAAAA,IAAOH,EAAaG,GAC3B,CAAA,GAAI,IAAKT,CAAAA,aAAAA,CAAcU,GAAID,CAAAA,CAAG,CAE1BD,CAAAA,CAAAA,CAAYG,KAAK,IAAKX,CAAAA,aAAAA,CAAcY,GAAIH,CAAAA,CAAG,CAAE,CAAA,CAAA,KAC1C,CACH,IAAMI,EAAU,IAAIC,CAAAA,CACpBR,CAAe,CAAA,IAAA,CAAKC,mBAAoBJ,CAAAA,CAAAA,CAASC,CAAOW,CAAAA,EAAAA,EAAW,CAC/DF,CAAQG,CAAAA,IAAAA,CAAKD,EAAO,EACxB,CAAC,CAAA,CACD,IAAKjB,CAAAA,OAAAA,CAAQmB,UAAUX,CAAY,CAAA,CACnC,IAAMY,CAAAA,CAAaL,CAAQM,CAAAA,YAAAA,EAAeC,CAAAA,IAAAA,CACtCC,GAAS,IAAK,CACV,IAAKrB,CAAAA,aAAAA,CAAcsB,MAAOb,CAAAA,CAAG,CAC7B,CAAA,IAAA,CAAKX,QAAQyB,WAAYjB,CAAAA,CAAY,EACzC,CAAC,CACDkB,CAAAA,EAAAA,EAAO,CAAA,CAGX,KAAKxB,aAAcyB,CAAAA,GAAAA,CAAIhB,CAAKS,CAAAA,CAAU,CACtCV,CAAAA,CAAAA,CAAYG,IAAKO,CAAAA,CAAU,EAC/B,CAGJ,GAAIV,CAAYkB,CAAAA,MAAAA,GAAW,CACvB,CAAA,MAAM,IAAIC,KAAAA,CAAM,mEAAmE,CAGvF,CAAA,OAAOC,EAAM,CAAA,GAAGpB,CAAW,CAC/B,CAEQD,mBAAAA,CACJJ,EACAC,CACAyB,CAAAA,CAAAA,CAA4C,CAE5C,OAAQzB,CAAI,EACR,KAAKT,CAAAA,CAAiBU,KAClB,OAAO,IAAIyB,EAAuB,CAAA,CAAC3B,CAAQ4B,CAAAA,OAAO,CAAG5B,CAAAA,CAAAA,CAAQ6B,GAAI,IAAKjC,CAAAA,IAAAA,CAAKkC,IAAMJ,CAAAA,CAAQ,CAC7F,CAAA,KAAKlC,CAAiBuC,CAAAA,IAAAA,CAClB,OAAO,IAAIC,EAAAA,CAAwB,CAAChC,CAAAA,CAAQ4B,OAAO,CAAA,CAAG5B,CAAQ6B,CAAAA,EAAAA,CAAI,KAAKjC,IAAKkC,CAAAA,IAAAA,CAAMJ,CAAQ,CAClG,CACJ,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,SAAA,CAAA,CAAA,CAAA,OAAA,IAAA,CAAA,EArDSjC,CAAmBwC,EAAAA,IAAAA,CAAAC,EAAA,CAAAD,CAAAA,IAAAA,CAAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAAC,CAAA,CAAA,CAAA,KAAA,CAAnB3C,CAAmB4C,CAAAA,OAAAA,CAAnB5C,EAAmB6C,SAAAC,CAAAA,UAAAA,CAFhB,MAAM,CAAA,CAEhB,CAAA,IAAO9C,CAAP+C,CAAAA,CAAAA,CAAAA,OAAO/C,CAAmB,CAAA,IClB1B,SAAUgD,EAAAA,CAASC,CAAc,CAAA,CACnC,OAAOA,CAAAA,CAAQ,OAAOA,CAAK,CAAA,CAAA,CAAA,CAAM,EACrC,CCsBaC,IAAAA,EAAAA,CAAAA,CAAY,IAAA,CAAnB,IAAOA,CAAP,CAAA,MAAOA,CAAY,CACrBC,SAAUF,CAAAA,CAAAA,CAAa,CACnB,OAAOD,GAASC,CAAK,CACzB,CAHSC,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,OAAAA,IAAAA,CAAAA,EAAAA,CAAAA,CAAY,CAAZA,CAAAA,CAAAA,CAAAA,UAAAA,CAAAA,EAAAA,CAAAA,CAAAA,IAAAA,CAAAA,YAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAYE,IAAA,CAAA,CAAA,CAAA,CAAAC,WAAA,CAAA,CAAA,CAAA,CAAnB,CAAA,IAAOH,CAAPI,CAAAA,CAAAA,CAAAA,OAAOJ,CAAY,CAAA,IChBnB,SAAUK,CAAAA,CAAiBC,CAAsB,CAAA,CACnD,OAAO,CACHC,QAAUD,CAAAA,CAAAA,CAAIC,SAASC,GAAIC,CAAAA,CAAsB,CACjDC,CAAAA,OAAAA,CAASJ,CAAII,CAAAA,OAAAA,CAErB,CCGM,IAAgBC,EAAhB,KAAqC,CAEvC5D,WACI6D,CAAAA,CAAAA,CACUC,CACAC,CAAAA,CAAAA,CACAC,CACAC,CAAAA,CAAAA,CACAC,EAAwC,CAJxC,IAAA,CAAAJ,YAAAA,CAAAA,CAAAA,CACA,IAAAC,CAAAA,WAAAA,CAAAA,CACA,CAAA,IAAA,CAAAC,qBAAAA,CACA,CAAA,IAAA,CAAAC,aAAAA,CAAAA,CAAAA,CACA,IAAAC,CAAAA,eAAAA,CAAAA,CAEV,CAAA,IAAA,CAAKC,OAASN,CAAqB,CAAA,CAAEO,QAAUL,CAAAA,CAAW,CAAE,EAChE,CAEAM,oBAAAA,CAAqBC,EAAwB,CACzC,OAAO,IAAKH,CAAAA,MAAAA,CAAOpD,GAAuB,CAAA,cAAA,CAAgB,CAAEwD,GAAAA,CAAKD,EAAWE,YAAc,CAAA,IAAA,CAAKC,QAAQ,EAAE,CAAE,CAAA,CAAElD,IACzGkC,CAAAA,EAAAA,CAAKT,GACMA,CAAQM,CAAAA,CAAAA,CAAiBN,CAAK,CAAA,CAAI0B,KAC5C,CAAA,CAAC,CAEV,CAEAC,WAAWC,CAAmBL,CAAAA,CAAAA,CAAkB,CAC5C,OAAO,IAAKJ,CAAAA,MAAAA,CAAOpD,GAAe,CAAA,UAAA,CAAY,CAAE8D,OAASD,CAAAA,CAAAA,CAAWL,GAAAA,CAAAA,CAAG,CAAE,CAAA,CAAEhD,IACvEkC,CAAAA,EAAAA,CAAKD,GACMA,CAAWA,CAAAA,CAAAA,CAASC,GAAIqB,CAAAA,CAAgB,CAAI,CAAA,EACtD,CAAA,CACDC,GAAW,IACAC,EAAAA,CAAG,EAAE,CACf,CAAC,CAEV,CAEAC,mBAAmBL,CAAmBN,CAAAA,CAAAA,CAAwB,CAC1D,OAAO,IAAKH,CAAAA,MAAAA,CACPpD,GAAkB,CAAA,mBAAA,CAAqB,CACpC8D,OAASD,CAAAA,CAAAA,CACTL,GAAKD,CAAAA,CAAAA,CACLY,WAAaC,CAAAA,CAAAA,CAAwBC,KACrCZ,CAAAA,YAAAA,CAAc,KAAKC,QAAQ,EAAA,CAC3BY,YAAY,CAAA,UAAA,CACf,CACA9D,CAAAA,IAAAA,CACG+D,EAAW9B,CAAAA,CAAAA,EACFA,EAGE,IAAK+B,CAAAA,WAAAA,CAAY/B,CAAQ,CAAA,CAFrBwB,EAAG,CAAA,EAAE,CAGnB,EACDD,EAAW,CAAA,IACAC,EAAG,CAAA,EAAE,CACf,CAAC,CAEd,CAEAQ,WAAW,EAAA,CACP,IAAMC,CAAAA,CAA6B,CAC/BC,KAAAA,CAAO,CACH,CAAC,QAAoBC,WAAW,EAAE,EAAG,EACrC,CAAA,CAAC,UAAuBA,CAAAA,WAAAA,EAAa,EAAG,EAIhD,CAAA,CAAA,CAAA,OAAO,IAAKxB,CAAAA,MAAAA,CAAOpD,GAAyB,CAAA,WAAW,EAAEQ,IACrDkC,CAAAA,EAAAA,CAAKmC,CAAWA,EAAAA,CAAAA,EAAgBH,CAAM,CAAA,CACtCV,EAAW,CAAA,IACAC,GAAGS,CAAK,CAClB,CAAC,CAEV,CAEAI,eAAAA,CAAgBC,CAAoB,CAAA,CAAA,CAAGC,EAAkB,CACrD,IAAMC,CAAgBF,CAAAA,CAAAA,EAAa,IAAKhC,CAAAA,YAAAA,CAAamC,iBACjDC,CAAAA,CAAAA,CAAc,sBAAsB,IAAKzB,CAAAA,QAAAA,EAAU,CAAA,mBAAA,EAAsBuB,CAAa,CAAA,wCAAA,CAAA,CAE1F,OAAID,CAAAA,GACAG,GAAe,CAAcH,WAAAA,EAAAA,CAAS,CAGnC,CAAA,CAAA,CAAA,IAAA,CAAK5B,MAAOpD,CAAAA,GAAAA,CAAkBmF,CAAW,CAAA,CAAE3E,KAC9C+D,EAAWtC,CAAAA,CAAAA,EACHA,CAASA,EAAAA,CAAAA,CAAMnB,MAAS,CAAA,CAAA,CACjB,IAAKsE,CAAAA,2BAAAA,CAA4BnD,EAAO+C,CAAYK,CAAAA,CAAAA,CAAgBC,SAAYD,CAAAA,CAAAA,CAAgBE,GAAG,CAAA,CAEvGtB,EAAG,CAAA,EAAsB,CACnC,CAAA,CACDD,EAAW,CAAA,IAAMC,EAAG,CAAA,EAAsB,CAAC,CAAC,CAEpD,CAEAuB,UAAWC,CAAAA,CAAAA,CAAiB,CACxB,OAAO,IAAKrC,CAAAA,MAAAA,CAAOpD,IAAkB,WAAa,CAAA,CAAE0F,UAAY,CAAA,CAACD,CAAS,CAAA,CAAGhC,YAAc,CAAA,IAAA,CAAKC,UAAU,CAAE,CAAElD,CAAAA,IAAAA,CAC1G+D,EAAWoB,CAAAA,CAAAA,EACH,CAACA,CAAAA,EAAOA,EAAI7E,MAAW,GAAA,CAAA,CAChBmD,EAAG,CAAA,EAAoB,CAAA,CAE3B,IAAK2B,CAAAA,UAAAA,CAAWD,EAAI,CAAC,CAAC,CAChC,CAAA,CACD3B,GAAW,IAAMC,EAAAA,CAAG,EAAoB,CAAC,CAAC,CAElD,CAEA4B,aAAAA,CAAcC,CAA8B,CAAA,CACxC,OAAO,IAAA,CAAK7C,qBACP8C,kBAAmBD,CAAAA,CAAAA,CAAeE,KAAM5E,CAAAA,EAAAA,CAAI,EAAE,CAAA,CAC9CZ,IAAKkC,CAAAA,EAAAA,CAAKuD,GAAa,IAAKC,CAAAA,cAAAA,CAAeJ,CAAgBG,CAAAA,CAAQ,CAAC,CAAC,CAC9E,CAEUzB,YAAY2B,CAAmB,CAAA,CACrC,GAAIA,CAAAA,CAAMrF,MAAW,GAAA,CAAA,CACjB,OAAOmD,EAAAA,CAAG,EAAE,CAAA,CAGhB,IAAMmC,CAAAA,CAAUD,CAAM,CAAA,CAAC,CAAE5G,CAAAA,OAAAA,CAAQyG,MAAM5E,EAEvC,CAAA,OAAO,IAAK6B,CAAAA,oBAAAA,CAAqB8C,kBAAmBK,CAAAA,CAAAA,CAAS,KAAK,CAAA,CAAE5F,KAChEkC,EAAKuD,CAAAA,CAAAA,EACME,CAAMzD,CAAAA,GAAAA,CAAK2D,CAAQ,EAAA,CACtB,IAAMP,CAAAA,CAAiB,KAAKQ,SAAUD,CAAAA,CAAI,CAC1C,CAAA,OAAO,IAAKH,CAAAA,cAAAA,CAAeJ,CAAgBG,CAAAA,CAAQ,CACvD,CAAC,CACJ,CAAC,CAEV,CAEQC,cAAAA,CAAeJ,CAAgCG,CAAAA,CAAAA,CAAa,CAChE,IAAM1G,CAAAA,CAAUuG,CAEhB,CAAA,GAAIG,CAAU,CAAA,CACV,IAAMM,CAAAA,CAAe,KAAKrD,aAAcsD,CAAAA,kBAAAA,CAAmBjH,CAAS,CAAA,EAAI0G,CAAAA,CAAAA,CAAUtC,KAAW,CAAA,CAAA,CAAA,CAAA,CAAO,GAAO,CAAK,CAAA,CAAA,CAC1G8C,CAAa,CAAA,IAAA,CAAKtD,eAAgBuD,CAAAA,aAAAA,CAAcH,CAAcN,CAAAA,CAAAA,CAAU1G,EAAQoH,MAAM,CAAA,CAE5F,OAAOC,GAAAA,CAAAC,CAAA,CAAA,EAAA,CACAf,CADA,CAAA,CAAA,CAEHS,aAAAA,CACAE,CAAAA,UAAAA,CAAAA,CAER,CAAA,CAAA,CACA,OAAOX,CACX,CAEAF,UAAAA,CAAWS,EAAgB,CACvB,OAAO,IAAK7B,CAAAA,WAAAA,CAAY,CAAC6B,CAAI,CAAC,CAAA,CAAE7F,KAC5BkC,EAAKD,CAAAA,CAAAA,EACMA,CAAS,CAAA,CAAC,CAAK,EAAA,IACzB,CAAC,CAEV,CAEAqE,WAAYC,CAAAA,CAAAA,CAAyC,CACjD,OAAO,IAAK3D,CAAAA,MAAAA,CAAOpD,GAAuB,CAAA,gBAAA,CAAkB4G,IAAAC,CAAA,CAAA,EAAA,CAAKE,CAAL,CAAA,CAAA,CAAetD,YAAc,CAAA,IAAA,CAAKC,QAAQ,EAAE,EAAE,CAAElD,CAAAA,IAAAA,CACxGkC,EAAKT,CAAAA,CAAAA,EACMA,CAAQM,CAAAA,CAAAA,CAAiBN,CAAK,CAAA,CAAI0B,MAC5C,CAAC,CAEV,CAEAyB,2BAAAA,CAA4B3C,CAAwBuE,CAAAA,CAAAA,CAAuB,CACvE,OAAO,KAAKxC,WAAY/B,CAAAA,CAAQ,CAAEjC,CAAAA,IAAAA,CAAKkC,EAAKuE,CAAAA,CAAAA,EAAoBA,CAAgBvE,CAAAA,GAAAA,CAAKT,GAAW2E,GAAAC,CAAAA,CAAAA,CAAA,EAAK5E,CAAAA,CAAAA,CAAAA,CAAL,CAAYiF,cAAAA,CAAgBF,CAAM,CAAA,CAAG,CAAC,CAAC,CAC3I,CAEAG,eAAAA,CAAgBnC,CAAkB,CAAA,CAC9B,IAAMoC,CAAAA,CAAsBpC,EAAY,CAAcA,WAAAA,EAAAA,CAAS,CAAK,CAAA,CAAA,EAAA,CAEpE,OAAO,IAAA,CAAK5B,MAAOiE,CAAAA,IAAAA,CAAmB,wDAAwDD,CAAmB,CAAA,CAAE,CAAE5G,CAAAA,IAAAA,CACjH+D,EAAW9B,CAAAA,CAAAA,EACH,CAACA,CAAAA,EAAYA,EAAS3B,MAAW,GAAA,CAAA,CAC1BmD,EAAG,CAAA,EAAE,CAAA,CAET,IAAKO,CAAAA,WAAAA,CAAY/B,CAAQ,CACnC,CAAA,CACDC,EAAKD,CAAAA,CAAAA,EACMA,CAAW6E,CAAAA,EAAAA,CAAQ7E,CAAW8E,CAAAA,CAAAA,EAAMA,EAAEC,SAAW,CAAA,MAAM,CAAI,CAAA,EACrE,CAAC,CAEV,CAAA,MClLSC,EAAsB,CAAA,CAAA,IAAA,CAA7B,IAAOA,CAAP,CAAA,MAAOA,CAA8B5E,SAAAA,CAAqB,CAC5DyD,SAAUoB,CAAAA,CAAAA,CAAsB,CAC5B,OAAOC,CAA6BD,CAAAA,CAAU,CAClD,CAEAhE,UAAQ,CACJ,OAAA,UACJ,CAEAzE,WAC6B6D,CAAAA,CAAAA,CACNC,CACAE,CAAAA,CAAAA,CACAC,EACAC,CAAwC,CAAA,CAE3D,KAAML,CAAAA,CAAAA,CAAsBC,EAAc,eAAiBE,CAAAA,CAAAA,CAAsBC,CAAeC,CAAAA,CAAe,EAL5F,IAAAJ,CAAAA,YAAAA,CAAAA,CACA,CAAA,IAAA,CAAAE,oBAAAA,CAAAA,CAAAA,CACA,IAAAC,CAAAA,aAAAA,CAAAA,EACA,IAAAC,CAAAA,eAAAA,CAAAA,EAGvB,CAEAyE,mBAAoBnC,CAAAA,CAAAA,CAAmBoC,CAAqB,CAAA,CACxD,IAAMnD,CAAgC,CAAA,EAEtC,CAAA,OAAO,IAAKtB,CAAAA,MAAAA,CACPpD,GAAyD,CAAA,CAAA,mBAAA,EAAsByF,CAAS,CAAI,CAAA,CAAA,CACzFoC,aAAe,CAAA,CAACA,CAAa,CAAA,CAChC,CACArH,CAAAA,IAAAA,CACGkC,GAAKT,CACMA,EAAAA,CAAAA,EAAQA,CAAM4F,CAAAA,CAAa,CAAKnD,EAAAA,CAC1C,CACDV,CAAAA,EAAAA,CAAW,IACAC,EAAGS,CAAAA,CAAK,CAClB,CAAC,CAEd,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,SAAA,CAAA,CAAA,CAAA,OAAA,IAAA,CAAA,EAlCS+C,CAAqBjG,EAAAA,IAAAA,CAUlBsG,GAAe,CAAAtG,CAAAA,IAAAA,CAAAuG,EAAA,CAAA,CAAAvG,IAAAwG,CAAAA,EAAA,CAAAxG,CAAAA,IAAAA,CAAAyG,EAAA,CAAAzG,CAAAA,IAAAA,CAAA0G,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAAvG,CAAA,CAAA,CAAA,KAAA,CAVlB8F,CAAqB7F,CAAAA,OAAAA,CAArB6F,EAAqB5F,SAAAC,CAAAA,UAAAA,CAFlB,MAAM,CAAA,CAEhB,CAAA,IAAO2F,CAAPU,CAAAA,CAAAA,CAAAA,OAAOV,CAAsB,CAAA,ICKtBW,IAAAA,EAAAA,CAAAA,CAAoB,IAAA,CAA3B,IAAOA,CAAAA,CAAP,MAAOA,CAAoB,CAC7BnJ,WACYoJ,CAAAA,CAAAA,CACEC,CACFC,CAAAA,CAAAA,CAAwC,CAFxC,IAAA,CAAAF,mBAAAA,CACE,CAAA,IAAA,CAAAC,0BAAAA,CAAAA,CAAAA,CACF,IAAAC,CAAAA,mBAAAA,CAAAA,EACT,CAEHC,qBAAqBjJ,CAAuB,CAAA,CACxC,OAAO,IAAA,CAAKgJ,mBAAoBjJ,CAAAA,kBAAAA,CAAmBC,CAAO,CAAA,CAAEiB,KACxDiI,EAAK,CAAA,CAACC,CAAmBvI,CAAAA,CAAAA,GAAY,IAAKwI,CAAAA,yBAAAA,CAA0BD,CAAmBvI,CAAAA,CAAO,EAAGZ,CAAO,CAAA,CACxGgF,EAAWqE,CAAAA,CAAAA,EAAmB,IAAKC,CAAAA,yBAAAA,CAA0BD,CAAc,CAAC,CAAC,CAErF,CAEQE,yBAA0BvJ,CAAAA,CAAAA,CAAyBY,CAAwB,CAAA,CAC/E,OAAIZ,CAAAA,CAAQwJ,SACDD,CAA0BvJ,CAAAA,CAAAA,CAASY,CAAS,CAAA,CAC/C6I,OAASC,CAAAA,CAAAA,CACZ,CAEMH,CAAAA,CAAAA,CAA0BvJ,EAASY,CAAS,CAAA,CAC/C6I,OAASE,CAAAA,CAAAA,CACZ,CAET,CAEQC,iBAAkB5J,CAAAA,CAAAA,CAAyBY,EAAwB,CACvE,OAAO0F,GAActG,CAAAA,CAAAA,CAASY,CAAO,CACzC,CAEAiJ,2BAAAA,CAA4BR,EAA8B,CACtD,OACI,CAACS,CAAAA,CAAoBC,UAAWV,CAAAA,CAAc,CAC7C,EAAA,CAACA,EAAeW,WACbX,EAAAA,CAAAA,CAAeY,YAAaC,CAAAA,OAAAA,CAASC,CAAMA,EAAAA,CAAAA,CAAEC,OAAO,CAAA,CAAEC,MAAOC,CAAMA,EAAAA,CAAAA,CAAEC,sBAAsB,GAAA,SAAmC,CACjIlB,EAAAA,CAAAA,CAAeW,WAAeX,EAAAA,CAAAA,CAAemB,OAAOC,SAE7D,CAEAC,iBAAkB9J,CAAAA,CAAAA,CAAwB,CACtC,OAAO+J,CAA4B/J,CAAAA,CAAO,GAAKgK,CAA4BhK,CAAAA,CAAO,CAAKiK,EAAAA,CAAAA,CAAuBjK,CAAO,CACzH,CAEQ0I,yBAAAA,CAA0BtJ,EAAuB,CACrD,OAAO,IAAK8I,CAAAA,kBAAAA,CAAmBxC,aAActG,CAAAA,CAAO,CACxD,CAEQoJ,0BAA0BpJ,CAAyBY,CAAAA,CAAAA,CAAwB,CAC/E,OAAI,CAAC,IAAA,CAAK8J,iBAAkB9J,CAAAA,CAAO,GAAKA,CAAQkK,CAAAA,OAAAA,CAAQ5E,SAAclG,GAAAA,CAAAA,CAAQ6B,EAI1E8I,GAAAA,CAAAA,CAA4B/J,CAAO,CAAA,GACnCZ,EAAU,IAAKuJ,CAAAA,yBAAAA,CAA0BvJ,CAASY,CAAAA,CAAO,CAGzDiK,CAAAA,CAAAA,CAAAA,CAAuBjK,CAAO,CAAA,GAC9BZ,EAAU+K,CAA2B/K,CAAAA,CAAAA,CAASY,CAAO,CAAA,CAAA,CAGrDgK,CAA4BhK,CAAAA,CAAO,CACnCZ,GAAAA,CAAAA,CAAU,KAAK4J,iBAAkB5J,CAAAA,CAAAA,CAASY,CAAO,CAAA,CAAA,CAAA,CAG9CZ,CACX,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,SAAA,CAAA,CAAA,CAAA,OAAA,IAAA,CAAA,EAjES6I,CAAoB5G,EAAAA,IAAAA,CAAAiG,EAAA,CAAAjG,CAAAA,IAAAA,CAAA+I,CAAA,CAAA,CAAA/I,IAAAxC,CAAAA,CAAA,CAAA,CAAA,wBAApBoJ,CAAoBxG,CAAAA,OAAAA,CAApBwG,CAAoBvG,CAAAA,SAAA,CAAA,CAA3B,CAAA,IAAOuG,CAAPoC,CAAAA,CAAAA,CAAAA,OAAOpC,CAAoB,CAAA"}