{"version":3,"sources":["libs/sales-common/src/lib/sales-opportunity/pipeline-stages/stage.model.ts","libs/sales-common/src/lib/sales-opportunity/pipeline-stages/pipeline.model.ts","libs/sales-common/src/lib/sales-opportunity/pipeline.pipe.ts","libs/sales-common/src/lib/sales-opportunity/pipeline-pipes.module.ts","libs/sales-common/src/lib/interfaces/access.service.interface.ts","libs/sales-common/src/lib/interfaces/logged-in-user-info.service.interface.ts","libs/sales-common/src/lib/interfaces/sales-teams.service.ts","libs/sales-common/src/lib/assets/i18n/en_devel.json","libs/sales-common/src/lib/voice-dictation/voice-dictation.service.ts","libs/sales-common/src/lib/voice-dictation/voice-text-area.directive.ts","libs/sales-common/src/lib/voice-dictation/voice-dictation.module.ts","node_modules/@vendasta/the-loop/fesm2020/vendasta-the-loop.mjs","libs/sales-common/src/lib/loop-v2/comment/comment.component.ts","libs/sales-common/src/lib/loop-v2/comment/comment.component.html","libs/sales-common/src/lib/loop-v2/comment-list/comment-list.component.ts","libs/sales-common/src/lib/loop-v2/comment-list/comment-list.component.html","libs/sales-common/src/lib/loop-v2/loop-v2-filters/filter-dialogs/multi-selection-dialog/multi-selection-dialog.component.ts","libs/sales-common/src/lib/loop-v2/loop-v2-filters/filter-dialogs/multi-selection-dialog/multi-selection-dialog.component.html","libs/sales-common/src/lib/loop-v2/loop-v2-filters/filter-dialogs/single-selection-dialog/single-selection-dialog.component.ts","libs/sales-common/src/lib/loop-v2/loop-v2-filters/filter-dialogs/single-selection-dialog/single-selection-dialog.component.html","libs/sales-common/src/lib/loop-v2/loop-v2-filters/loop-filter-chip/loop-filter-chip.component.ts","libs/sales-common/src/lib/loop-v2/loop-v2-filters/loop-filter-chip/loop-filter-chip.component.html","libs/sales-common/src/lib/loop-v2/loop-v2-filters/loop-v2-filters.service.ts","libs/sales-common/src/lib/loop-v2/post/post.component.ts","libs/sales-common/src/lib/loop-v2/post/post.component.html","libs/sales-common/src/lib/loop-v2/loop-v2-filters/loop-v2-filters.component.ts","libs/sales-common/src/lib/loop-v2/loop-v2-filters/loop-v2-filters.component.html","libs/sales-common/src/lib/loop-v2/post-content/post-content.component.ts","libs/sales-common/src/lib/loop-v2/post-content/post-content.component.html","libs/sales-common/src/lib/loop-v2/loop-v2.module.ts","libs/sales-common/src/lib/sales-activity/routes.ts","libs/sales-common/src/lib/sales-activity/sales-activity.ts","libs/sales-common/src/lib/sales-activity/sales-activity.service.ts","libs/sales-common/src/lib/sales-activity/salestool.host.service.ts","libs/sales-common/src/lib/pipeline-selector/pipeline-selector.pipe.ts","libs/sales-common/src/lib/pipeline-selector/pipeline-selector-pipe.module.ts","libs/sales-common/src/lib/account-name-getter/account-name-getter.service.ts","libs/sales-common/src/lib/account-name-getter/account-name-getter.pipe.ts","libs/sales-common/src/lib/account-name-getter/account-name-getter.module.ts","libs/sales-common/src/lib/days-ago/days-ago.pipe.ts","libs/sales-common/src/lib/days-ago/days-ago-pipe.module.ts","libs/sales-common/src/lib/days-away/days-away.component.ts","libs/sales-common/src/lib/days-away/days-away.component.html","libs/sales-common/src/lib/days-away/days-away.module.ts"],"sourcesContent":["import { StageInterface } from '@vendasta/sales-opportunities';\n\nexport function compareStages(stageA: StageInterface, stageB: StageInterface): number {\n if (stageA.probability > stageB.probability) {\n return 1;\n }\n if (stageA.probability < stageB.probability) {\n return -1;\n }\n return 0;\n}\n","import { compareStages } from './stage.model';\nimport { StageInterface } from '@vendasta/sales-opportunities';\n\nexport const USER_PIPELINE_TOKEN = 'USER_PIPELINE';\nexport const USER_PIPELINES_TOKEN = 'USER_PIPELINES';\nexport const CURRENT_PIPELINE = 'CURRENT_PIPELINE';\nexport const STAGE_PROBABILITY_DELTA = 0.01;\n\nexport class Pipeline {\n stages: StageInterface[];\n id: string;\n name: string;\n\n constructor(stages: StageInterface[], id: string, name: string) {\n this.stages = stages;\n this.id = id;\n this.name = name;\n }\n\n findStage(probability: number): StageInterface {\n probability = probability ? probability : 0;\n const sortedStages: StageInterface[] = this.stages.sort(compareStages);\n const foundStage: StageInterface = sortedStages.find((stage) => probability <= stage.probability);\n return foundStage || sortedStages[sortedStages.length - 1];\n }\n\n findProbabilityRangeFromStage(stage: StageInterface): { minimum: number; maximum: number } {\n if (this.stages.length === 0) {\n throw new Error('Pipeline has no stages');\n }\n const sortedStages: StageInterface[] = this.stages.sort(compareStages);\n const foundStage = sortedStages.find((curStage) => curStage.probability === stage.probability);\n\n if (foundStage) {\n const indexOfStage = sortedStages.indexOf(foundStage);\n\n if (sortedStages.length === 1) {\n return { minimum: 0, maximum: 1 };\n }\n\n if (indexOfStage === 0) {\n return { minimum: 0, maximum: foundStage.probability };\n } else if (indexOfStage > 0 && indexOfStage < sortedStages.length - 1) {\n const lowerProbability = (sortedStages[indexOfStage - 1].probability * 100 + STAGE_PROBABILITY_DELTA) / 100;\n const upperProbability = foundStage.probability;\n return { minimum: lowerProbability, maximum: upperProbability };\n } else if (indexOfStage === sortedStages.length - 1) {\n const maximumProbability = 1;\n const lowerProbability = (sortedStages[indexOfStage - 1].probability * 100 + STAGE_PROBABILITY_DELTA) / 100;\n return { minimum: lowerProbability, maximum: maximumProbability };\n }\n } else {\n // 100 returned if stage not found\n const lowerProbability =\n (sortedStages[sortedStages.length - 2].probability * 100 + STAGE_PROBABILITY_DELTA) / 100;\n return { minimum: lowerProbability, maximum: 1 };\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { StageInterface } from '@vendasta/sales-opportunities';\nimport { Pipeline } from './pipeline-stages/pipeline.model';\n\n@Pipe({\n name: 'selectedPipeline',\n})\nexport class SelectedPipelinePipe implements PipeTransform {\n transform(pipelines: Pipeline[], pipelineId: string): Pipeline {\n return pipelines.find((p) => p.id === pipelineId);\n }\n}\n\n@Pipe({\n name: 'pipelineStage',\n})\nexport class PipelineStagePipe implements PipeTransform {\n transform(pipeline: Pipeline, probability: number): StageInterface {\n return pipeline?.findStage(probability);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { PipelineStagePipe, SelectedPipelinePipe } from './pipeline.pipe';\n\n@NgModule({\n exports: [SelectedPipelinePipe, PipelineStagePipe],\n declarations: [SelectedPipelinePipe, PipelineStagePipe],\n})\nexport class SalesOpportunitiesPipesModule {}\n","import { Injectable, InjectionToken } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nexport const enum Feature {\n salesTeam = 'sales-team',\n pipeline = 'ssc-pipeline',\n}\n\nexport interface AccessServiceInterface {\n hasAccessToFeature(feature: Feature | string): Observable;\n}\n\nexport const AccessServiceInterfaceToken: InjectionToken =\n new InjectionToken('AccessServiceInterface');\n\n@Injectable()\nexport class AccessServiceInterfaceStub implements AccessServiceInterface {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n hasAccessToFeature(feature: Feature | string): Observable {\n return of(true);\n }\n}\n","import { Injectable, InjectionToken } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nexport interface LoggedInUserInfo {\n salespersonId: string;\n isImpersonation: boolean;\n hasAccessToAllAccountsInMarket: boolean;\n partnerId: string;\n marketId: string;\n phoneExtension: string;\n userName: string;\n salesManagerId?: string;\n}\n\nexport interface LoggedInUserInfoServiceInterface {\n loggedInUserInfo$: Observable;\n hasAccessToAllAccountsInMarket$: Observable;\n salesPersonId$: Observable;\n\n getPartnerId(): Observable;\n\n getMarketId(): Observable;\n}\n\nexport const LoggedInUserInfoServiceInterfaceToken: InjectionToken =\n new InjectionToken('LoggedInUserInfoServiceInterface');\n\n@Injectable()\nexport class LoggedInUserInfoServiceInterfaceStub implements LoggedInUserInfoServiceInterface {\n loggedInUserInfo$: Observable = of({\n salespersonId: 'SP-1',\n isImpersonation: false,\n hasAccessToAllAccountsInMarket: true,\n partnerId: 'ABC',\n marketId: 'mk1',\n phoneExtension: '555',\n userName: 'John Doe',\n });\n hasAccessToAllAccountsInMarket$: Observable = of(true);\n salesPersonId$: Observable = of('SP-1');\n\n getPartnerId(): Observable {\n return of('ABC');\n }\n\n getMarketId(): Observable {\n return of('mk1');\n }\n}\n","import { Observable, of, SchedulerLike } from 'rxjs';\nimport { Injectable, InjectionToken } from '@angular/core';\n\nexport class SalesTeamInterface {\n teamName?: string;\n groupId?: string;\n partnerId?: string;\n marketId?: string;\n updated?: Date;\n}\n\nexport interface SalesTeamsServiceInterface {\n getSalesTeams$(partnerId: string, marketId: string, scheduler?: SchedulerLike): Observable;\n listSalesTeamMembers(groupId: string): Observable;\n}\n\nexport const SalesTeamsServiceInterfaceToken: InjectionToken =\n new InjectionToken('SalesTeamsServiceInterface');\n\n@Injectable()\nexport class SalesTeamsServiceInterfaceStub implements SalesTeamsServiceInterface {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getSalesTeams$(partnerId: string, marketId: string, scheduler?: SchedulerLike): Observable {\n return of([\n {\n teamName: 'The Best Sales Team',\n groupId: 'g-1234',\n partnerId: 'ABC',\n marketId: 'mk1',\n },\n ]);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n listSalesTeamMembers(groupId: string): Observable {\n return of(['SP-1', 'SP-2']);\n }\n}\n","{\n \"FRONTEND\": {\n \"LOOP\": {\n \"LOAD_MORE_COMMENTS\": \"Load More Comments\",\n \"MORE_LIKES_TEXT\": \"more...\",\n \"RESULTS\": \"{{results}} results\",\n \"NEW_COMMENT_TOOLTIP\": \"Press enter to submit\",\n \"FILTER\": \"Filter\",\n \"FILTERS\": {\n \"PLACEHOLDERS\": {\n \"MARKET\": \"Filter by market\",\n \"SALES_TEAM\": \"Filter by sales team\",\n \"SALESPEOPLE\": \"Filter by salespeople\",\n \"TASK_MANAGER_USERS\": \"Filter by Task Manager users\",\n \"ACCOUNT_STATUS\": \"Filter by account status\",\n \"ACTION_TAKEN\": \"Filter by action taken\",\n \"SELECT_FILTERS\": \"Select filters\"\n },\n \"SALESPEOPLE\": \"Salespeople\",\n \"TASK_MANAGER_USERS\": \"Task Manager users\",\n \"SALES_TEAM\": \"Sales Team\",\n \"SALES\": \"Sales\",\n \"ACCOUNT_STATUS\": {\n \"TYPE\": \"Account Status\",\n \"STATUSES\": \"Statuses\",\n \"IN_PROGRESS\": \"In Progress\",\n \"FOLLOW_UP_NEEDED\": \"Follow-up Needed\",\n \"CLOSED_WON\": \"Closed Won\",\n \"CLOSED_LOST\": \"Closed Lost\"\n },\n \"ACTION_TAKEN\": {\n \"TYPE\": \"Action Taken\",\n \"ACTIONS\": \"Actions\",\n \"EMAIL_SENT\": \"Email Sent\",\n \"EMAIL_RECEIVED\": \"Email Received\",\n \"INBOUND_MESSAGE\": \"Inbound Message\",\n \"INBOUND_CALL\": \"Inbound Call\",\n \"OUTBOUND_CALL\": \"Outbound Call\",\n \"MEETING\": \"Meeting\"\n },\n \"DATE_RANGE\": {\n \"TYPE\": \"Date Range\",\n \"FROM\": \"From\",\n \"TO\": \"To\"\n }\n },\n \"ERRORS\": {\n \"ERROR_COMMENTING\": \"There was an error commenting, please try again\",\n \"ERROR_LOADING_COMMENTS\": \"There was an error loading comments, please try again\",\n \"ERROR_LOADING_SALES_PEOPLE\": \"There was an error loading salespeople, please try again\",\n \"ERROR_LOADING_SALES_TEAMS\": \"There was an error loading sales teams, please try again\",\n \"ERROR_LOADING_POSTS\": \"There was an error loading posts, please try again\",\n \"ERROR_UNLIKING_POST\": \"There was an error unliking the post, please try again\",\n \"ERROR_LIKING_POST\": \"There was an error liking the post, please try again\",\n \"ERROR_FOLLOWING_POST\": \"There was an error following the post, please try again\",\n \"ERROR_UNFOLLOWING_POST\": \"There was an error unfollowing the post, please try again\",\n \"ERROR_LOADING_MARKETS\": \"There was an error loading markets, please try again\",\n \"ERROR_LOADING_POST\": {\n \"TITLE\": \"Couldn't load post!\",\n \"MSG\": \"There was an error loading the post, please try again.\"\n },\n \"CREATE_EMPTY_FILTER_ERROR\": \"Can't create a filter with empty name\",\n \"REMOVE_FILTER_ERROR\": \"Can't remove a filter that doesn't exist\"\n },\n \"LIKE\": \"Like\",\n \"LIKES\": \"Like(s)\",\n \"ADD_A_COMMENT\": \"Add a comment\",\n \"READ_MORE\": \"Read more\",\n \"READ_LESS\": \"Read less\",\n \"UNKNOWN_USER\": \"Unknown User\",\n \"ADMIN\": \"Admin\",\n \"MARKET\": \"Market\",\n \"FOLLOW\": \"Follow\",\n \"FOLLOWING\": \"Following\",\n \"SHARE\": \"Share\",\n \"COPIED_TO_CLIPBOARD\": \"Copied post link to clipboard\",\n \"ACTION_LABELS\": {\n \"CANCEL\": \"Cancel\",\n \"SAVE\": \"Save\"\n },\n \"EMPTY\": \"No posts found\",\n \"VALUES\": \"values\",\n \"ALL_CHANNELS\": \"All channels\",\n \"VIEW_ALL_POSTS\": \"View All Posts\",\n \"RECENT_POSTS\": \"Recent Posts From the Loop\"\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\ndeclare let webkitSpeechRecognition: any;\n\n@Injectable()\nexport class ContinuousVoiceRecognitionService {\n private readonly outputText$$ = new BehaviorSubject('');\n public readonly outputText$ = this.outputText$$.asObservable();\n\n private readonly isSpeechRecognitionAvailable$$ = new BehaviorSubject(true);\n public readonly isSpeechRecognitionAvailable$ = this.isSpeechRecognitionAvailable$$.asObservable();\n\n private recognition: any;\n public isListening = false;\n\n constructor() {\n if (!('webkitSpeechRecognition' in window)) {\n this.isSpeechRecognitionAvailable$$.next(false);\n return;\n }\n\n this.recognition = new webkitSpeechRecognition();\n this.recognition.continuous = true;\n this.recognition.interimResults = true;\n // TODO (SSC-2437): support other languages\n this.recognition.lang = 'en-US';\n\n this.recognition.onresult = (e) => {\n const tempWords = Array.from(e.results)\n .map((result) => result[0])\n .map((result) => result.transcript)\n .join('');\n\n this.outputText$$.next(tempWords);\n };\n }\n\n toggleVoiceRecognition(): void {\n if (this.isListening === true) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n stop(): void {\n this.isListening = false;\n this.recognition?.abort();\n }\n\n private start(): void {\n this.isListening = true;\n this.recognition?.start();\n }\n}\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ContinuousVoiceRecognitionService } from './voice-dictation.service';\n\nconst MIC = 'mic';\nconst MIC_OFF = 'mic_off';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[voiceTextArea]',\n providers: [ContinuousVoiceRecognitionService],\n})\nexport class VoiceTextAreaDirective implements OnInit, OnDestroy {\n @Input() htmlTextAreaElement: HTMLTextAreaElement;\n\n private iconListener: () => any;\n private unavailableIconListener: () => any;\n private initialValue: string;\n private iconText = this.renderer.createText(MIC);\n private readonly isMobileScreen$: Observable;\n\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n private readonly voiceService: ContinuousVoiceRecognitionService,\n private readonly breakpointObserver: BreakpointObserver,\n private readonly snackbarService: SnackbarService,\n ) {\n this.isMobileScreen$ = this.breakpointObserver.observe([Breakpoints.XSmall]).pipe(map((result) => result.matches));\n }\n\n ngOnInit(): void {\n const enableSpeech$ = combineLatest([this.isMobileScreen$, this.voiceService.isSpeechRecognitionAvailable$]).pipe(\n map(([isMobileScreen, isSpeechAvailable]) => {\n if (!isMobileScreen && !isSpeechAvailable) {\n // show greyed out icon and suggest user use's Google Chrome\n const icon = this.addIconToDOM(MIC_OFF);\n this.addNotAvailableIconListener(icon);\n }\n return !isMobileScreen && isSpeechAvailable;\n }),\n );\n\n enableSpeech$.subscribe((enableSpeech) => {\n if (enableSpeech === true) {\n const icon = this.addIconToDOM(MIC);\n this.listenToIconClick(icon);\n }\n });\n\n this.voiceService.outputText$.subscribe((text) => {\n this.updateTextAreaValue(text);\n });\n }\n\n updateTextAreaValue(newText: string): void {\n if (newText === '') {\n return;\n }\n\n if (!!this.initialValue && this.initialValue !== '') {\n this.htmlTextAreaElement.value = this.initialValue + ' ' + newText;\n } else {\n const sentenceCaseValue = newText[0].toUpperCase() + newText.slice(1);\n this.htmlTextAreaElement.value = sentenceCaseValue;\n }\n this.htmlTextAreaElement.dispatchEvent(new Event('input'));\n }\n\n ngOnDestroy(): void {\n this.voiceService.stop();\n if (this.iconListener) {\n this.iconListener();\n }\n\n if (this.unavailableIconListener) {\n this.unavailableIconListener();\n }\n }\n\n listenToIconClick(icon: any): void {\n this.iconListener = this.renderer.listen(icon, 'click', () => {\n if (this.voiceService.isListening === false) {\n this.initialValue = this.htmlTextAreaElement.value;\n this.renderer.removeChild(icon, this.iconText);\n this.renderer.addClass(icon, 'pulsating-circle');\n } else {\n this.renderer.appendChild(icon, this.iconText);\n this.renderer.removeClass(icon, 'pulsating-circle');\n this.initialValue = this.htmlTextAreaElement.value;\n }\n this.voiceService.toggleVoiceRecognition();\n });\n }\n\n addIconToDOM(iconName: string): any {\n const icon = this.renderer.createElement('mat-icon');\n if (iconName === MIC) {\n this.renderer.appendChild(icon, this.iconText);\n } else {\n this.renderer.appendChild(icon, this.renderer.createText(MIC_OFF));\n }\n this.renderer.addClass(icon, 'mat-icon');\n this.renderer.addClass(icon, 'material-icons');\n this.renderer.setStyle(icon, 'position', 'absolute');\n this.renderer.setStyle(icon, 'top', '8px');\n this.renderer.setStyle(icon, 'right', '8px');\n\n this.renderer.setStyle(icon, 'cursor', 'pointer');\n\n this.renderer.setStyle(icon, 'border-radius', '16px');\n\n this.renderer.setStyle(icon, 'width', '18px');\n this.renderer.setStyle(icon, 'height', '18px');\n this.renderer.setStyle(icon, 'font-size', '18px');\n\n this.renderer.appendChild(this.el.nativeElement.parentNode.parentNode, icon);\n return icon;\n }\n\n addNotAvailableIconListener(icon: any): any {\n this.unavailableIconListener = this.renderer.listen(icon, 'click', () => {\n const snack = this.snackbarService.openWithOptions('VOICE_TO_TEXT.USE_GOOGLE_CHROME', {\n duration: 5000,\n action: 'VOICE_TO_TEXT.DOWNLOAD_CHROME',\n });\n\n snack.onAction().subscribe(() => {\n window.open('https://www.google.com/chrome/', '_blank');\n });\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VoiceTextAreaDirective } from './voice-text-area.directive';\n\n@NgModule({\n declarations: [VoiceTextAreaDirective],\n exports: [VoiceTextAreaDirective],\n imports: [CommonModule],\n})\nexport class VoiceDictationModule {}\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nfunction enumStringToValue$7(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$6(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CommonResource {\n static fromProto(proto) {\n let m = new CommonResource();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ExtractedValue {\n static fromProto(proto) {\n let m = new ExtractedValue();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.valuePath !== 'undefined') {\n toReturn['valuePath'] = this.valuePath;\n }\n return toReturn;\n }\n}\nclass Filter {\n static fromProto(proto) {\n let m = new Filter();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = ExtractedValue.fromProto(proto.value);\n }\n if (proto.options) {\n m.options = proto.options.map(FilterOption.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n if (typeof this.label !== 'undefined') {\n toReturn['label'] = this.label;\n }\n if (typeof this.options !== 'undefined' && this.options !== null) {\n toReturn['options'] = 'toApiJson' in this.options ? this.options.toApiJson() : this.options;\n }\n return toReturn;\n }\n}\nclass FilterOption {\n static fromProto(proto) {\n let m = new FilterOption();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass Icon {\n static fromProto(proto) {\n let m = new Icon();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.iconPath !== 'undefined') {\n toReturn['iconPath'] = this.iconPath;\n }\n if (typeof this.matIcon !== 'undefined') {\n toReturn['matIcon'] = this.matIcon;\n }\n return toReturn;\n }\n}\nclass IconResource {\n static fromProto(proto) {\n let m = new IconResource();\n m = Object.assign(m, proto);\n if (proto.defaultIcon) {\n m.defaultIcon = Icon.fromProto(proto.defaultIcon);\n }\n if (proto.customTypes) {\n m.customTypes = proto.customTypes.map(IconType.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.resourcePath !== 'undefined') {\n toReturn['resourcePath'] = this.resourcePath;\n }\n if (typeof this.defaultIcon !== 'undefined' && this.defaultIcon !== null) {\n toReturn['defaultIcon'] = 'toApiJson' in this.defaultIcon ? this.defaultIcon.toApiJson() : this.defaultIcon;\n }\n if (typeof this.customTypes !== 'undefined' && this.customTypes !== null) {\n toReturn['customTypes'] = 'toApiJson' in this.customTypes ? this.customTypes.toApiJson() : this.customTypes;\n }\n return toReturn;\n }\n}\nclass IconType {\n static fromProto(proto) {\n let m = new IconType();\n m = Object.assign(m, proto);\n if (proto.icon) {\n m.icon = Icon.fromProto(proto.icon);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.icon !== 'undefined' && this.icon !== null) {\n toReturn['icon'] = 'toApiJson' in this.icon ? this.icon.toApiJson() : this.icon;\n }\n return toReturn;\n }\n}\nclass PostType {\n static fromProto(proto) {\n let m = new PostType();\n m = Object.assign(m, proto);\n if (proto.commonResources) {\n m.commonResources = proto.commonResources.map(ExtractedValue.fromProto);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.filters) {\n m.filters = proto.filters.map(Filter.fromProto);\n }\n if (proto.iconResource) {\n m.iconResource = IconResource.fromProto(proto.iconResource);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.typeId !== 'undefined') {\n toReturn['typeId'] = this.typeId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.postIdTemplate !== 'undefined') {\n toReturn['postIdTemplate'] = this.postIdTemplate;\n }\n if (typeof this.eventTypeId !== 'undefined') {\n toReturn['eventTypeId'] = this.eventTypeId;\n }\n if (typeof this.commonResources !== 'undefined' && this.commonResources !== null) {\n toReturn['commonResources'] = 'toApiJson' in this.commonResources ? this.commonResources.toApiJson() : this.commonResources;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.partnerIdPath !== 'undefined') {\n toReturn['partnerIdPath'] = this.partnerIdPath;\n }\n if (typeof this.marketIdPath !== 'undefined') {\n toReturn['marketIdPath'] = this.marketIdPath;\n }\n if (typeof this.userIdPath !== 'undefined') {\n toReturn['userIdPath'] = this.userIdPath;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.channel !== 'undefined') {\n toReturn['channel'] = this.channel;\n }\n if (typeof this.iconResource !== 'undefined' && this.iconResource !== null) {\n toReturn['iconResource'] = 'toApiJson' in this.iconResource ? this.iconResource.toApiJson() : this.iconResource;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass User {\n static fromProto(proto) {\n let m = new User();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.firstName !== 'undefined') {\n toReturn['firstName'] = this.firstName;\n }\n if (typeof this.lastName !== 'undefined') {\n toReturn['lastName'] = this.lastName;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Comment {\n static fromProto(proto) {\n let m = new Comment();\n m = Object.assign(m, proto);\n if (proto.user) {\n m.user = User.fromProto(proto.user);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.user !== 'undefined' && this.user !== null) {\n toReturn['user'] = 'toApiJson' in this.user ? this.user.toApiJson() : this.user;\n }\n if (typeof this.text !== 'undefined') {\n toReturn['text'] = this.text;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass PostLatestComments {\n static fromProto(proto) {\n let m = new PostLatestComments();\n m = Object.assign(m, proto);\n if (proto.comments) {\n m.comments = proto.comments.map(Comment.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.comments !== 'undefined' && this.comments !== null) {\n toReturn['comments'] = 'toApiJson' in this.comments ? this.comments.toApiJson() : this.comments;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass Post {\n static fromProto(proto) {\n let m = new Post();\n m = Object.assign(m, proto);\n if (proto.postIdentifier) {\n m.postIdentifier = PostIdentifier.fromProto(proto.postIdentifier);\n }\n if (proto.user) {\n m.user = User.fromProto(proto.user);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.likes) {\n m.likes = proto.likes.map(User.fromProto);\n }\n if (proto.latestComments) {\n m.latestComments = PostLatestComments.fromProto(proto.latestComments);\n }\n if (proto.icon) {\n m.icon = Icon.fromProto(proto.icon);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postIdentifier !== 'undefined' && this.postIdentifier !== null) {\n toReturn['postIdentifier'] = 'toApiJson' in this.postIdentifier ? this.postIdentifier.toApiJson() : this.postIdentifier;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.user !== 'undefined' && this.user !== null) {\n toReturn['user'] = 'toApiJson' in this.user ? this.user.toApiJson() : this.user;\n }\n if (typeof this.resources !== 'undefined') {\n toReturn['resources'] = this.resources;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.html !== 'undefined') {\n toReturn['html'] = this.html;\n }\n if (typeof this.likes !== 'undefined' && this.likes !== null) {\n toReturn['likes'] = 'toApiJson' in this.likes ? this.likes.toApiJson() : this.likes;\n }\n if (typeof this.latestComments !== 'undefined' && this.latestComments !== null) {\n toReturn['latestComments'] = 'toApiJson' in this.latestComments ? this.latestComments.toApiJson() : this.latestComments;\n }\n if (typeof this.isSubscribed !== 'undefined') {\n toReturn['isSubscribed'] = this.isSubscribed;\n }\n if (typeof this.style !== 'undefined') {\n toReturn['style'] = this.style;\n }\n if (typeof this.icon !== 'undefined' && this.icon !== null) {\n toReturn['icon'] = 'toApiJson' in this.icon ? this.icon.toApiJson() : this.icon;\n }\n return toReturn;\n }\n}\nclass PostIdentifier {\n static fromProto(proto) {\n let m = new PostIdentifier();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postId !== 'undefined') {\n toReturn['postId'] = this.postId;\n }\n if (typeof this.typeId !== 'undefined') {\n toReturn['typeId'] = this.typeId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar RenderOption = /*#__PURE__*/function (RenderOption) {\n RenderOption[RenderOption[\"RENDER_OPTION_FULL\"] = 0] = \"RENDER_OPTION_FULL\";\n RenderOption[RenderOption[\"RENDER_OPTION_COMPACT\"] = 1] = \"RENDER_OPTION_COMPACT\";\n return RenderOption;\n}(RenderOption || {});\n// *********************************\n\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CommentRequest {\n static fromProto(proto) {\n let m = new CommentRequest();\n m = Object.assign(m, proto);\n if (proto.postIdentifier) {\n m.postIdentifier = PostIdentifier.fromProto(proto.postIdentifier);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postIdentifier !== 'undefined' && this.postIdentifier !== null) {\n toReturn['postIdentifier'] = 'toApiJson' in this.postIdentifier ? this.postIdentifier.toApiJson() : this.postIdentifier;\n }\n if (typeof this.text !== 'undefined') {\n toReturn['text'] = this.text;\n }\n return toReturn;\n }\n}\nclass CommentResponse {\n static fromProto(proto) {\n let m = new CommentResponse();\n m = Object.assign(m, proto);\n if (proto.comment) {\n m.comment = Comment.fromProto(proto.comment);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.comment !== 'undefined' && this.comment !== null) {\n toReturn['comment'] = 'toApiJson' in this.comment ? this.comment.toApiJson() : this.comment;\n }\n return toReturn;\n }\n}\nclass UpdatePostTypeRequestOperationCommonResources {\n static fromProto(proto) {\n let m = new UpdatePostTypeRequestOperationCommonResources();\n m = Object.assign(m, proto);\n if (proto.commonResources) {\n m.commonResources = proto.commonResources.map(ExtractedValue.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.commonResources !== 'undefined' && this.commonResources !== null) {\n toReturn['commonResources'] = 'toApiJson' in this.commonResources ? this.commonResources.toApiJson() : this.commonResources;\n }\n return toReturn;\n }\n}\nclass CreateCommonResourceRequest {\n static fromProto(proto) {\n let m = new CreateCommonResourceRequest();\n m = Object.assign(m, proto);\n if (proto.commonResource) {\n m.commonResource = CommonResource.fromProto(proto.commonResource);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.commonResource !== 'undefined' && this.commonResource !== null) {\n toReturn['commonResource'] = 'toApiJson' in this.commonResource ? this.commonResource.toApiJson() : this.commonResource;\n }\n return toReturn;\n }\n}\nclass CreatePostTypeRequest {\n static fromProto(proto) {\n let m = new CreatePostTypeRequest();\n m = Object.assign(m, proto);\n if (proto.postType) {\n m.postType = PostType.fromProto(proto.postType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postType !== 'undefined' && this.postType !== null) {\n toReturn['postType'] = 'toApiJson' in this.postType ? this.postType.toApiJson() : this.postType;\n }\n return toReturn;\n }\n}\nclass CreatePostTypeResponse {\n static fromProto(proto) {\n let m = new CreatePostTypeResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.typeId !== 'undefined') {\n toReturn['typeId'] = this.typeId;\n }\n return toReturn;\n }\n}\nclass ListPostsRequestDateRangeFilter {\n static fromProto(proto) {\n let m = new ListPostsRequestDateRangeFilter();\n m = Object.assign(m, proto);\n if (proto.beginRange) {\n m.beginRange = new Date(proto.beginRange);\n }\n if (proto.endRange) {\n m.endRange = new Date(proto.endRange);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.beginRange !== 'undefined' && this.beginRange !== null) {\n toReturn['beginRange'] = 'toApiJson' in this.beginRange ? this.beginRange.toApiJson() : this.beginRange;\n }\n if (typeof this.endRange !== 'undefined' && this.endRange !== null) {\n toReturn['endRange'] = 'toApiJson' in this.endRange ? this.endRange.toApiJson() : this.endRange;\n }\n return toReturn;\n }\n}\nclass DeletePostTypeRequest {\n static fromProto(proto) {\n let m = new DeletePostTypeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.typeId !== 'undefined') {\n toReturn['typeId'] = this.typeId;\n }\n return toReturn;\n }\n}\nclass UpdatePostTypeRequestOperationFilters {\n static fromProto(proto) {\n let m = new UpdatePostTypeRequestOperationFilters();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = proto.filters.map(Filter.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListPostTypesRequestFilters {\n static fromProto(proto) {\n let m = new ListPostTypesRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.channel !== 'undefined') {\n toReturn['channel'] = this.channel;\n }\n return toReturn;\n }\n}\nclass GetChannelsRequest {\n static fromProto(proto) {\n let m = new GetChannelsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass GetChannelsResponse {\n static fromProto(proto) {\n let m = new GetChannelsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.channels !== 'undefined') {\n toReturn['channels'] = this.channels;\n }\n return toReturn;\n }\n}\nclass GetPostRequest {\n static fromProto(proto) {\n let m = new GetPostRequest();\n m = Object.assign(m, proto);\n if (proto.postIdentifier) {\n m.postIdentifier = PostIdentifier.fromProto(proto.postIdentifier);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postIdentifier !== 'undefined' && this.postIdentifier !== null) {\n toReturn['postIdentifier'] = 'toApiJson' in this.postIdentifier ? this.postIdentifier.toApiJson() : this.postIdentifier;\n }\n return toReturn;\n }\n}\nclass GetPostResponse {\n static fromProto(proto) {\n let m = new GetPostResponse();\n m = Object.assign(m, proto);\n if (proto.post) {\n m.post = Post.fromProto(proto.post);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.post !== 'undefined' && this.post !== null) {\n toReturn['post'] = 'toApiJson' in this.post ? this.post.toApiJson() : this.post;\n }\n return toReturn;\n }\n}\nclass GetPostTypeRequest {\n static fromProto(proto) {\n let m = new GetPostTypeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.typeId !== 'undefined') {\n toReturn['typeId'] = this.typeId;\n }\n return toReturn;\n }\n}\nclass GetPostTypeResponse {\n static fromProto(proto) {\n let m = new GetPostTypeResponse();\n m = Object.assign(m, proto);\n if (proto.postType) {\n m.postType = PostType.fromProto(proto.postType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postType !== 'undefined' && this.postType !== null) {\n toReturn['postType'] = 'toApiJson' in this.postType ? this.postType.toApiJson() : this.postType;\n }\n return toReturn;\n }\n}\nclass LikeRequest {\n static fromProto(proto) {\n let m = new LikeRequest();\n m = Object.assign(m, proto);\n if (proto.postIdentifier) {\n m.postIdentifier = PostIdentifier.fromProto(proto.postIdentifier);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postIdentifier !== 'undefined' && this.postIdentifier !== null) {\n toReturn['postIdentifier'] = 'toApiJson' in this.postIdentifier ? this.postIdentifier.toApiJson() : this.postIdentifier;\n }\n return toReturn;\n }\n}\nclass LikeResponse {\n static fromProto(proto) {\n let m = new LikeResponse();\n m = Object.assign(m, proto);\n if (proto.user) {\n m.user = User.fromProto(proto.user);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.user !== 'undefined' && this.user !== null) {\n toReturn['user'] = 'toApiJson' in this.user ? this.user.toApiJson() : this.user;\n }\n return toReturn;\n }\n}\nclass ListCommentsRequest {\n static fromProto(proto) {\n let m = new ListCommentsRequest();\n m = Object.assign(m, proto);\n if (proto.postIdentifier) {\n m.postIdentifier = PostIdentifier.fromProto(proto.postIdentifier);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postIdentifier !== 'undefined' && this.postIdentifier !== null) {\n toReturn['postIdentifier'] = 'toApiJson' in this.postIdentifier ? this.postIdentifier.toApiJson() : this.postIdentifier;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListCommentsResponse {\n static fromProto(proto) {\n let m = new ListCommentsResponse();\n m = Object.assign(m, proto);\n if (proto.comments) {\n m.comments = proto.comments.map(Comment.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.comments !== 'undefined' && this.comments !== null) {\n toReturn['comments'] = 'toApiJson' in this.comments ? this.comments.toApiJson() : this.comments;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListCommonResourcesRequest {\n static fromProto(proto) {\n let m = new ListCommonResourcesRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListCommonResourcesResponse {\n static fromProto(proto) {\n let m = new ListCommonResourcesResponse();\n m = Object.assign(m, proto);\n if (proto.commonResources) {\n m.commonResources = proto.commonResources.map(CommonResource.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.commonResources !== 'undefined' && this.commonResources !== null) {\n toReturn['commonResources'] = 'toApiJson' in this.commonResources ? this.commonResources.toApiJson() : this.commonResources;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListPostTypesRequest {\n static fromProto(proto) {\n let m = new ListPostTypesRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListPostTypesRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListPostTypesResponse {\n static fromProto(proto) {\n let m = new ListPostTypesResponse();\n m = Object.assign(m, proto);\n if (proto.postTypes) {\n m.postTypes = proto.postTypes.map(PostType.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postTypes !== 'undefined' && this.postTypes !== null) {\n toReturn['postTypes'] = 'toApiJson' in this.postTypes ? this.postTypes.toApiJson() : this.postTypes;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListPostsRequest {\n static fromProto(proto) {\n let m = new ListPostsRequest();\n m = Object.assign(m, proto);\n if (proto.dateRange) {\n m.dateRange = ListPostsRequestDateRangeFilter.fromProto(proto.dateRange);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.renderOption) {\n m.renderOption = enumStringToValue(RenderOption, proto.renderOption);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketIds !== 'undefined') {\n toReturn['marketIds'] = this.marketIds;\n }\n if (typeof this.userIds !== 'undefined') {\n toReturn['userIds'] = this.userIds;\n }\n if (typeof this.postTypeIds !== 'undefined') {\n toReturn['postTypeIds'] = this.postTypeIds;\n }\n if (typeof this.resourceFilters !== 'undefined') {\n toReturn['resourceFilters'] = this.resourceFilters;\n }\n if (typeof this.dateRange !== 'undefined' && this.dateRange !== null) {\n toReturn['dateRange'] = 'toApiJson' in this.dateRange ? this.dateRange.toApiJson() : this.dateRange;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.renderOption !== 'undefined') {\n toReturn['renderOption'] = this.renderOption;\n }\n return toReturn;\n }\n}\nclass ListPostsResponse {\n static fromProto(proto) {\n let m = new ListPostsResponse();\n m = Object.assign(m, proto);\n if (proto.posts) {\n m.posts = proto.posts.map(Post.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.posts !== 'undefined' && this.posts !== null) {\n toReturn['posts'] = 'toApiJson' in this.posts ? this.posts.toApiJson() : this.posts;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nclass UpdatePostTypeRequestOperation {\n static fromProto(proto) {\n let m = new UpdatePostTypeRequestOperation();\n m = Object.assign(m, proto);\n if (proto.commonResources) {\n m.commonResources = UpdatePostTypeRequestOperationCommonResources.fromProto(proto.commonResources);\n }\n if (proto.filters) {\n m.filters = UpdatePostTypeRequestOperationFilters.fromProto(proto.filters);\n }\n if (proto.iconResource) {\n m.iconResource = IconResource.fromProto(proto.iconResource);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.commonResources !== 'undefined' && this.commonResources !== null) {\n toReturn['commonResources'] = 'toApiJson' in this.commonResources ? this.commonResources.toApiJson() : this.commonResources;\n }\n if (typeof this.templateId !== 'undefined') {\n toReturn['templateId'] = this.templateId;\n }\n if (typeof this.partnerIdPath !== 'undefined') {\n toReturn['partnerIdPath'] = this.partnerIdPath;\n }\n if (typeof this.marketIdPath !== 'undefined') {\n toReturn['marketIdPath'] = this.marketIdPath;\n }\n if (typeof this.userIdPath !== 'undefined') {\n toReturn['userIdPath'] = this.userIdPath;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.channel !== 'undefined') {\n toReturn['channel'] = this.channel;\n }\n if (typeof this.iconResource !== 'undefined' && this.iconResource !== null) {\n toReturn['iconResource'] = 'toApiJson' in this.iconResource ? this.iconResource.toApiJson() : this.iconResource;\n }\n if (typeof this.postIdTemplate !== 'undefined') {\n toReturn['postIdTemplate'] = this.postIdTemplate;\n }\n return toReturn;\n }\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass SubscribeRequest {\n static fromProto(proto) {\n let m = new SubscribeRequest();\n m = Object.assign(m, proto);\n if (proto.postIdentifier) {\n m.postIdentifier = PostIdentifier.fromProto(proto.postIdentifier);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postIdentifier !== 'undefined' && this.postIdentifier !== null) {\n toReturn['postIdentifier'] = 'toApiJson' in this.postIdentifier ? this.postIdentifier.toApiJson() : this.postIdentifier;\n }\n return toReturn;\n }\n}\nclass UnlikeRequest {\n static fromProto(proto) {\n let m = new UnlikeRequest();\n m = Object.assign(m, proto);\n if (proto.postIdentifier) {\n m.postIdentifier = PostIdentifier.fromProto(proto.postIdentifier);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postIdentifier !== 'undefined' && this.postIdentifier !== null) {\n toReturn['postIdentifier'] = 'toApiJson' in this.postIdentifier ? this.postIdentifier.toApiJson() : this.postIdentifier;\n }\n return toReturn;\n }\n}\nclass UnsubscribeRequest {\n static fromProto(proto) {\n let m = new UnsubscribeRequest();\n m = Object.assign(m, proto);\n if (proto.postIdentifier) {\n m.postIdentifier = PostIdentifier.fromProto(proto.postIdentifier);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.postIdentifier !== 'undefined' && this.postIdentifier !== null) {\n toReturn['postIdentifier'] = 'toApiJson' in this.postIdentifier ? this.postIdentifier.toApiJson() : this.postIdentifier;\n }\n return toReturn;\n }\n}\nclass UpdatePostTypeRequest {\n static fromProto(proto) {\n let m = new UpdatePostTypeRequest();\n m = Object.assign(m, proto);\n if (proto.operations) {\n m.operations = proto.operations.map(UpdatePostTypeRequestOperation.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.typeId !== 'undefined') {\n toReturn['typeId'] = this.typeId;\n }\n if (typeof this.operations !== 'undefined' && this.operations !== null) {\n toReturn['operations'] = 'toApiJson' in this.operations ? this.operations.toApiJson() : this.operations;\n }\n return toReturn;\n }\n}\n\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'the-loop-api.vendasta-local.com',\n 'test': '',\n 'demo': 'the-loop-demo.apigateway.co',\n 'prod': 'the-loop-prod.apigateway.co',\n 'production': 'the-loop-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(t) {\n return new (t || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet TheLoopApiService = /*#__PURE__*/(() => {\n class TheLoopApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getPost(r) {\n const request = r.toApiJson ? r : new GetPostRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/GetPost\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPostResponse.fromProto(resp)));\n }\n listPosts(r) {\n const request = r.toApiJson ? r : new ListPostsRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/ListPosts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPostsResponse.fromProto(resp)));\n }\n getPostType(r) {\n const request = r.toApiJson ? r : new GetPostTypeRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/GetPostType\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPostTypeResponse.fromProto(resp)));\n }\n createPostType(r) {\n const request = r.toApiJson ? r : new CreatePostTypeRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/CreatePostType\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreatePostTypeResponse.fromProto(resp)));\n }\n updatePostType(r) {\n const request = r.toApiJson ? r : new UpdatePostTypeRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/UpdatePostType\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deletePostType(r) {\n const request = r.toApiJson ? r : new DeletePostTypeRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/DeletePostType\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getChannels(r) {\n const request = r.toApiJson ? r : new GetChannelsRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/GetChannels\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetChannelsResponse.fromProto(resp)));\n }\n listPostTypes(r) {\n const request = r.toApiJson ? r : new ListPostTypesRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/ListPostTypes\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPostTypesResponse.fromProto(resp)));\n }\n createCommonResource(r) {\n const request = r.toApiJson ? r : new CreateCommonResourceRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/CreateCommonResource\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listCommonResources(r) {\n const request = r.toApiJson ? r : new ListCommonResourcesRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/ListCommonResources\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListCommonResourcesResponse.fromProto(resp)));\n }\n comment(r) {\n const request = r.toApiJson ? r : new CommentRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/Comment\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CommentResponse.fromProto(resp)));\n }\n listComments(r) {\n const request = r.toApiJson ? r : new ListCommentsRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/ListComments\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListCommentsResponse.fromProto(resp)));\n }\n like(r) {\n const request = r.toApiJson ? r : new LikeRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/Like\", request.toApiJson(), this.apiOptions()).pipe(map(resp => LikeResponse.fromProto(resp)));\n }\n unlike(r) {\n const request = r.toApiJson ? r : new UnlikeRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/Unlike\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n subscribe(r) {\n const request = r.toApiJson ? r : new SubscribeRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/Subscribe\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n unsubscribe(r) {\n const request = r.toApiJson ? r : new UnsubscribeRequest(r);\n return this.http.post(this._host + \"/theloop.v1.TheLoop/Unsubscribe\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n TheLoopApiService.ɵfac = function TheLoopApiService_Factory(t) {\n return new (t || TheLoopApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n TheLoopApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TheLoopApiService,\n factory: TheLoopApiService.ɵfac,\n providedIn: 'root'\n });\n return TheLoopApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction fillPostZeroValues(p) {\n p.likes = !!p.likes ? p.likes : [];\n p.latestComments = !!p.latestComments ? p.latestComments : new PostLatestComments({});\n p.latestComments.comments = !!p.latestComments.comments ? p.latestComments.comments : [];\n p.latestComments.pagingMetadata = !!p.latestComments.pagingMetadata ? p.latestComments.pagingMetadata : new PagedResponseMetadata({});\n return p;\n}\nclass PagedResponse {\n constructor(results, nextCursor, hasMore) {\n this.results = results;\n this.nextCursor = nextCursor;\n this.hasMore = hasMore;\n }\n}\nlet TheLoopService = /*#__PURE__*/(() => {\n class TheLoopService {\n constructor(api) {\n this.api = api;\n }\n getPost(typeId, postId) {\n return this.api.getPost({\n postIdentifier: {\n postId: postId,\n typeId: typeId\n }\n }).pipe(map(resp => fillPostZeroValues(resp.post)));\n }\n getPostType(typeId) {\n return this.api.getPostType({\n typeId: typeId\n }).pipe(map(resp => resp.postType));\n }\n createPostType(postType) {\n return this.api.createPostType({\n postType: postType\n }).pipe(map(resp => resp.typeId));\n }\n updatePostType(typeId, operations) {\n return this.api.updatePostType({\n typeId: typeId,\n operations: operations\n }).pipe(map(() => true));\n }\n deletePostType(typeId) {\n return this.api.deletePostType({\n typeId: typeId\n }).pipe(map(() => true));\n }\n createCommonResource(id, name) {\n return this.api.createCommonResource({\n commonResource: {\n id: id,\n name: name\n }\n }).pipe(map(() => true));\n }\n listCommonResources(pagingOptions) {\n return this.api.listCommonResources({\n pagingOptions: pagingOptions\n }).pipe(map(resp => new PagedResponse(resp.commonResources, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore)));\n }\n comment(typeId, postId, text) {\n return this.api.comment({\n postIdentifier: {\n typeId: typeId,\n postId: postId\n },\n text: text\n }).pipe(map(resp => resp.comment));\n }\n like(typeId, postId) {\n return this.api.like({\n postIdentifier: {\n typeId: typeId,\n postId: postId\n }\n }).pipe(map(resp => resp.user));\n }\n unlike(typeId, postId) {\n return this.api.unlike({\n postIdentifier: {\n typeId: typeId,\n postId: postId\n }\n }).pipe(map(() => true));\n }\n listPosts(fitlers) {\n return this.api.listPosts(fitlers).pipe(map(resp => {\n if (!!resp && resp.posts) {\n resp.posts = resp.posts.map(p => fillPostZeroValues(p));\n }\n return resp;\n }));\n }\n listComments(typeId, postId, cursor, pageSize) {\n return this.api.listComments({\n postIdentifier: {\n typeId: typeId,\n postId: postId\n },\n pagingOptions: {\n cursor: cursor,\n pageSize: pageSize\n }\n }).pipe(map(resp => resp));\n }\n subscribe(typeId, postId) {\n return this.api.subscribe({\n postIdentifier: {\n typeId: typeId,\n postId: postId\n }\n }).pipe(map(() => true));\n }\n unsubscribe(typeId, postId) {\n return this.api.unsubscribe({\n postIdentifier: {\n typeId: typeId,\n postId: postId\n }\n }).pipe(map(() => true));\n }\n getChannels() {\n return this.api.getChannels({}).pipe(map(resp => resp.channels));\n }\n listPostTypes(filters, cursor, pageSize) {\n return this.api.listPostTypes({\n filters: filters,\n pagingOptions: {\n cursor: cursor,\n pageSize: pageSize\n }\n }).pipe(map(resp => {\n return new PagedResponse(resp.postTypes, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }));\n }\n }\n TheLoopService.ɵfac = function TheLoopService_Factory(t) {\n return new (t || TheLoopService)(i0.ɵɵinject(TheLoopApiService));\n };\n TheLoopService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TheLoopService,\n factory: TheLoopService.ɵfac,\n providedIn: 'root'\n });\n return TheLoopService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Comment, CommonResource, ExtractedValue, Filter, FilterOption, Post, PostIdentifier, PostType, RenderOption, TheLoopService, UpdatePostTypeRequestOperation, User };\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { CommentInterface } from '@vendasta/the-loop';\nimport moment from 'moment';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'sales-common-loop-v2-comment',\n templateUrl: './comment.component.html',\n styleUrls: ['./comment.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class CommentComponent implements OnInit {\n @Input() comment: CommentInterface = {};\n @Input() iconSize = '40';\n username: string;\n\n iconDiameter$: Observable;\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly breakpointObserver: BreakpointObserver,\n ) {}\n\n ngOnInit(): void {\n this.calculateUsername();\n this.iconDiameter$ = this.breakpointObserver\n .observe(['(max-width: 600px)'])\n .pipe(map((result) => (result.matches ? '28' : '40')));\n }\n\n calculateUsername(): void {\n const names: string[] = [];\n if (this.comment.user) {\n if (this.comment.user.firstName) {\n names.push(this.comment.user.firstName);\n }\n if (this.comment.user.lastName) {\n names.push(this.comment.user.lastName);\n }\n }\n if (names.length === 0) {\n names.push(this.translateService.instant('FRONTEND.LOOP.UNKNOWN_USER'));\n }\n this.username = names.join(' ');\n }\n\n fromNow(date: Date): string {\n return moment(date).fromNow();\n }\n}\n","
\n
\n \n \n
\n
\n {{ username }}\n {{ comment.text }}\n
\n {{ comment.created | date : 'MMM dd, y - h:mm a' }} ({{ fromNow(comment.created) }})\n
\n
\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { User } from '@vendasta/iam';\nimport { CommentInterface, PostIdentifier, PostLatestCommentsInterface, TheLoopService } from '@vendasta/the-loop';\nimport { finalize, take } from 'rxjs/operators';\n\n@Component({\n selector: 'sales-common-loop-v2-comment-list',\n templateUrl: './comment-list.component.html',\n styleUrls: ['./comment-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CommentListComponent implements OnInit {\n @Input() initialComments: PostLatestCommentsInterface;\n @Input() postId = '';\n @Input() typeId = '';\n @Input() currentUser: User;\n @Input() iconSize = '40';\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onCommentAdded = new EventEmitter();\n\n currentUserName = '';\n newCommentText = '';\n commenting = false;\n loadingMoreComments = false;\n comments: CommentInterface[] = [];\n hasMore = false;\n nextCursor = '';\n\n constructor(\n private readonly loopService: TheLoopService,\n private cdr: ChangeDetectorRef,\n private readonly alertService: SnackbarService,\n ) {}\n\n ngOnInit(): void {\n this.currentUserName = [this.currentUser.firstName, this.currentUser.lastName].join(' ');\n this.comments = (this.initialComments?.comments || []).reverse();\n this.hasMore = this.initialComments?.pagingMetadata?.hasMore;\n this.nextCursor = this.initialComments?.pagingMetadata?.nextCursor;\n }\n\n handleInput(event: any): void {\n if (!event.shiftKey && event.keyCode === 13) {\n this.comment();\n }\n }\n\n comment(): void {\n this.commenting = true;\n this.loopService\n .comment(this.typeId, this.postId, this.newCommentText)\n .pipe(\n take(1),\n finalize(() => {\n this.commenting = false;\n this.cdr.detectChanges();\n }),\n )\n .subscribe(\n (resp) => {\n this.comments.push(resp);\n this.newCommentText = '';\n this.onCommentAdded.emit(\n new PostIdentifier({\n typeId: this.typeId,\n postId: this.postId,\n }),\n );\n this.cdr.detectChanges();\n },\n (error) => {\n console.error(error);\n this.alertService.openErrorSnack('FRONTEND.LOOP.ERRORS.ERROR_COMMENTING');\n },\n );\n }\n\n loadMoreComments(): void {\n this.loadingMoreComments = true;\n this.loopService\n .listComments(this.typeId, this.postId, this.nextCursor, 10)\n .pipe(\n take(1),\n finalize(() => {\n this.loadingMoreComments = false;\n this.cdr.detectChanges();\n }),\n )\n .subscribe(\n (resp) => {\n const comments: CommentInterface[] = (resp.comments || []).reverse();\n this.comments = comments.concat(this.comments);\n this.hasMore = resp.pagingMetadata.hasMore;\n this.nextCursor = resp.pagingMetadata.nextCursor;\n this.cdr.detectChanges();\n },\n (error) => {\n console.error(error);\n this.alertService.openErrorSnack('FRONTEND.LOOP.ERRORS.ERROR_LOADING_COMMENTS');\n },\n );\n }\n}\n","
\n \n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n \n
\n \n {{ 'FRONTEND.LOOP.ADD_A_COMMENT' | translate }}\n \n {{ 'FRONTEND.LOOP.NEW_COMMENT_TOOLTIP' | translate }}\n \n
\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { FilterOption } from '../../loop-v2-filters.service';\n\ninterface SalespeopleDialogData {\n selected: string[];\n options: Observable;\n title: string;\n placeholder: string;\n}\n\n@Component({\n selector: 'sales-common-multi-selection-dialog',\n templateUrl: './multi-selection-dialog.component.html',\n styleUrls: ['./multi-selection-dialog.component.scss'],\n})\nexport class MultiSelectionDialogComponent implements OnInit {\n formControl = new UntypedFormControl();\n options$: Observable;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: SalespeopleDialogData,\n ) {}\n\n ngOnInit(): void {\n this.formControl.setValue(this.data.selected);\n\n this.options$ = this.data.options;\n }\n\n close(newData: boolean): void {\n if (!newData) {\n this.dialogRef.close();\n return;\n }\n this.dialogRef.close(this.formControl.value || []);\n }\n}\n","\n

{{ data.title | translate }}

\n \n
\n\n \n \n\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { combineLatest, Observable } from 'rxjs';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { FilterOption } from '../../loop-v2-filters.service';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { map, startWith, take } from 'rxjs/operators';\n\ninterface DialogData {\n selected: FilterOption;\n options: Observable;\n title: string;\n placeholder: string;\n}\n\n@Component({\n selector: 'sales-common-single-selection-dialog',\n templateUrl: './single-selection-dialog.component.html',\n styleUrls: ['./single-selection-dialog.component.scss'],\n})\nexport class SingleSelectionDialogComponent implements OnInit {\n formControl = new UntypedFormControl();\n options$: Observable;\n filteredOptions$: Observable;\n\n selectedOption: FilterOption;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\n ) {\n this.formControl.setValue(this.data.selected?.name);\n\n this.options$ = this.data.options;\n }\n\n ngOnInit(): void {\n this.filteredOptions$ = combineLatest([this.formControl.valueChanges.pipe(startWith('')), this.options$]).pipe(\n map(([value, options]) => this._filter(value, options)),\n );\n }\n\n private _filter(value: string, options: FilterOption[]): FilterOption[] {\n const filterValue = value.toLowerCase();\n\n return options.filter((option) => option.name.toLowerCase().includes(filterValue));\n }\n\n close(newData: boolean): void {\n if (!newData) {\n this.dialogRef.close();\n return;\n }\n this.dialogRef.close(this.selectedOption);\n }\n\n setOption(event: MatAutocompleteSelectedEvent): void {\n // Find the selected option\n this.options$\n .pipe(\n take(1),\n map((options) => {\n for (const option of options) {\n if (option.name === event.option.value) {\n return option;\n }\n }\n }),\n )\n .subscribe((option) => {\n this.selectedOption = option;\n });\n }\n}\n","\n

{{ data.title | translate }}

\n \n \n \n \n {{ option.name }}\n \n \n \n
\n\n \n \n\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { DisplayFilter } from '../loop-v2-filters.service';\n\n@Component({\n selector: 'sales-common-loop-filter-chip',\n templateUrl: './loop-filter-chip.component.html',\n styleUrls: ['./loop-filter-chip.component.scss'],\n})\nexport class LoopFilterChipComponent {\n @Input() filterItem: DisplayFilter;\n @Input() hideDelete: boolean;\n\n @Output() remove: EventEmitter = new EventEmitter();\n @Output() clicked: EventEmitter = new EventEmitter();\n\n clickedTag(): void {\n this.clicked.emit(this.filterItem.filterId);\n }\n\n removeTag(event: any): void {\n event.stopPropagation();\n this.remove.emit(this.filterItem.filterId);\n }\n}\n","
\n \n {{ filterItem.icon }}\n \n \n {{ filterItem.filterTypeTranslateKey | translate }}:\n \n \n {{ filterItem.displayName }}\n \n \n {{ filterItem.displayName$ | async }}\n \n \n \n
\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { SalesTeamService, SalespersonService } from '@vendasta/sales';\nimport {\n ListPostsRequestDateRangeFilterInterface,\n ListPostsResponseInterface,\n PostInterface,\n PostType,\n RenderOption,\n TheLoopService,\n} from '@vendasta/the-loop';\nimport { ListPostsRequestInterface } from '@vendasta/the-loop/lib/_internal/interfaces';\nimport {\n DateFilterOptions,\n DateRangeSelectorService,\n LocalStorageService,\n SavedFilter,\n URLParamService,\n} from '@vendasta/uikit';\nimport moment from 'moment';\nimport { BehaviorSubject, Observable, Subscription, combineLatest, of } from 'rxjs';\nimport { catchError, finalize, map, publishReplay, refCount, skipWhile, switchMap, take, tap } from 'rxjs/operators';\nimport {\n LoggedInUserInfoServiceInterface,\n LoggedInUserInfoServiceInterfaceToken,\n} from '../../interfaces/logged-in-user-info.service.interface';\nimport { Market } from '../../interfaces/market.interface';\n\nconst THE_LOOP = 'the-loop-filters-';\nexport const MAIN_FILTER = '__main_filter__';\n\nconst PAGE_SIZE = 25;\nexport const ALL_CHANNELS_OPTION = { name: 'FRONTEND.LOOP.ALL_CHANNELS', value: '' };\n\n// Any value will always be filtered on and the associated selector will be hidden\nexport interface ForcedFilterOptions {\n marketIds?: string[];\n userId?: string;\n}\n\nexport interface LoopOptions {\n forcedFilters?: ForcedFilterOptions;\n forcedChannel?: string;\n defaultChannel?: string;\n compact?: boolean;\n pageSize?: number;\n // The id of this specific instance of the loop so the filters aren't cross contaminated with other instances of the loop\n instanceId: string;\n}\n\nexport interface DisplayFilter {\n filterId: string;\n filterTypeTranslateKey?: string;\n displayName: string;\n displayName$?: Observable;\n icon?: string;\n}\n\nexport interface FilterOption {\n name: string;\n value: string;\n}\n\nexport interface FilterConfig {\n id: string;\n typeId: string;\n title: string;\n options: FilterOption[];\n}\n\nexport interface ArmApiResponse {\n version: string;\n data: T;\n requestId: string;\n responseTime: number;\n statusCode: number;\n}\n\nexport interface DigitalAgentApiInterface {\n digital_agent_id: string;\n partner_id: string;\n first_name: string;\n last_name: string;\n email: string;\n created: Date;\n updated: Date;\n _accessible_partner_ids: string[];\n partner_permissions: object;\n _user_id: string;\n}\n\ninterface ResourceFilterSelectedValues {\n id: string;\n values: string[];\n}\n\ninterface AppliedFilters {\n market: FilterOption;\n salespeopleUserIds: string[];\n digitalagentsUserIds: string[];\n salesTeam: FilterOption;\n resourceFilters: ResourceFilterSelectedValues[];\n dateRangeKey: DateFilterOptions;\n dateRange: ListPostsRequestDateRangeFilterInterface;\n channel: string;\n}\n\n@Injectable()\nexport class LoopV2FiltersService implements OnDestroy {\n private posts$$: BehaviorSubject = new BehaviorSubject([]);\n posts$: Observable = this.posts$$.asObservable();\n\n private loading$$: BehaviorSubject = new BehaviorSubject(true);\n loading$: Observable = this.loading$$.asObservable();\n\n private hasMore$$: BehaviorSubject = new BehaviorSubject(false);\n hasMore$: Observable = this.hasMore$$.asObservable();\n\n private readonly selectedMarket$$ = new BehaviorSubject(null);\n public readonly selectedMarket$ = this.selectedMarket$$.asObservable();\n public readonly marketOptions$: Observable;\n public readonly marketFilterDisplay$: Observable;\n\n private readonly selectedSalespeopleUserIds$$ = new BehaviorSubject([]);\n private readonly selectedDigitalAgentsUserIds$$ = new BehaviorSubject([]);\n public readonly selectedSalespeopleUserIds$ = this.selectedSalespeopleUserIds$$.asObservable();\n public readonly selectedDigitalAgentsUserIds$ = this.selectedDigitalAgentsUserIds$$.asObservable();\n public readonly salespeopleOptions$: Observable;\n public readonly digitalagentsOptions$: Observable;\n public readonly salespeopleFilterDisplay$: Observable;\n public readonly digitalagentsFilterDisplay$: Observable;\n\n private readonly selectedSalesTeam$$ = new BehaviorSubject(null);\n public readonly selectedSalesTeam$ = this.selectedSalesTeam$$.asObservable();\n public readonly salesTeamOptions$: Observable;\n public readonly salesTeamFilterDisplay$: Observable;\n\n private selectedDateRangeKey: DateFilterOptions;\n private readonly selectedDateRange$$ = new BehaviorSubject(null);\n public readonly selectedDateRange$ = this.selectedDateRange$$.asObservable();\n public readonly dateRangeFilterDisplay$: Observable;\n\n public readonly selectedSalesTeamMemberUserIds$: Observable;\n\n private readonly resourceFiltersMap$$ = new BehaviorSubject>(null);\n public readonly resourceFiltersMap$ = this.resourceFiltersMap$$.asObservable().pipe(skipWhile((f) => f === null));\n public readonly resourceFilters$: Observable;\n private readonly resourceFiltersSelectedValues = new Map>();\n\n private loopOptions$$ = new BehaviorSubject(null);\n private readonly loopOptions$ = this.loopOptions$$.asObservable().pipe(skipWhile((f) => f === null));\n private compact = false;\n private pageSize = PAGE_SIZE;\n private id: string;\n\n public readonly channelOptions$: Observable;\n private selectedChannel$$ = new BehaviorSubject(null);\n public readonly selectedChannel$ = this.selectedChannel$$.asObservable().pipe(\n skipWhile((f) => f === null),\n publishReplay(1),\n refCount(),\n );\n\n private postTypes$$ = new BehaviorSubject(null);\n private postTypes$ = this.postTypes$$.asObservable().pipe(\n skipWhile((f) => f === null),\n publishReplay(1),\n refCount(),\n );\n\n private filteringMarketIds$: Observable;\n private filteringUserIds$: Observable;\n\n private nextCursor = '';\n\n subscriptions: Subscription[] = [];\n\n private savedFilters$$ = new BehaviorSubject([]);\n savedFilters$: Observable;\n\n constructor(\n private readonly loopService: TheLoopService,\n private readonly alertService: SnackbarService,\n private readonly translate: TranslateService,\n @Inject('partnerId$') private readonly partnerId$: Observable,\n @Inject('markets$') private readonly markets$: Observable,\n private readonly salesTeamService: SalesTeamService,\n private readonly salespeopleService: SalespersonService,\n @Inject(LoggedInUserInfoServiceInterfaceToken)\n private readonly loggedInUserInfoService: LoggedInUserInfoServiceInterface,\n private dateRangeService: DateRangeSelectorService,\n private urlParamService: URLParamService,\n private localStorageService: LocalStorageService,\n private route: ActivatedRoute,\n private http: HttpClient,\n private environmentService: EnvironmentService,\n ) {\n this.loopOptions$\n .pipe(\n tap((loopOptions) => this.selectedChannel$$.next(loopOptions?.defaultChannel || '')),\n take(1),\n )\n .subscribe();\n\n this.marketOptions$ = this.markets$.pipe(\n take(1),\n map((markets) =>\n markets.map((market) => ({\n name: market.name,\n value: market.marketId,\n })),\n ),\n publishReplay(1),\n refCount(),\n );\n\n this.marketFilterDisplay$ = combineLatest([this.marketOptions$, this.selectedMarket$]).pipe(\n map(([marketOptions, selectedMarket]) => {\n if (!selectedMarket) {\n return '';\n }\n const market = marketOptions.find((m) => selectedMarket.value === m.value);\n return market.name;\n }),\n );\n\n this.filteringMarketIds$ = combineLatest([this.markets$, this.selectedMarket$, this.loopOptions$]).pipe(\n map(([markets, selectedMarket, loopOptions]) => {\n let marketIds;\n if (loopOptions?.forcedFilters?.marketIds) {\n marketIds = loopOptions?.forcedFilters.marketIds;\n } else if (selectedMarket) {\n marketIds = [selectedMarket.value];\n } else {\n marketIds = markets.map((m) => m.marketId);\n }\n return marketIds;\n }),\n );\n\n this.salespeopleOptions$ = this.loggedInUserInfoService.loggedInUserInfo$.pipe(\n take(1),\n switchMap((userInfo) => {\n return this.salespeopleService.listSalespersons(\n {\n partnerId: userInfo.partnerId,\n marketId: userInfo.marketId,\n },\n '',\n 1000,\n );\n }),\n map((resp) =>\n resp.results?.map((sp) => ({\n name: [sp.firstName, sp.lastName].join(' '),\n value: sp.userId,\n })),\n ),\n publishReplay(1),\n refCount(),\n );\n\n this.digitalagentsOptions$ = combineLatest([\n this.loggedInUserInfoService.loggedInUserInfo$,\n this.loopOptions$,\n ]).pipe(\n take(1),\n switchMap(([userInfo, loopOptions]) => {\n if (!loopOptions?.forcedFilters?.userId && !loopOptions?.forcedFilters?.marketIds) {\n return this.getPartnerAssignees(userInfo.partnerId);\n }\n return of({\n version: '0',\n data: [],\n requestId: '',\n responseTime: 0,\n statusCode: 0,\n });\n }),\n map((response) => response.data),\n map((data) => {\n const agents = [];\n data.forEach((agent) => {\n agents.push(this.armResultToFilterOption(agent));\n });\n return agents;\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.salespeopleFilterDisplay$ = combineLatest([\n this.salespeopleOptions$,\n this.selectedSalespeopleUserIds$,\n this.translate.stream('FRONTEND.LOOP.FILTERS.SALESPEOPLE'),\n ]).pipe(\n map(([options, selectedIds, plural]) => {\n const selected = options.filter((sp) => selectedIds.some((id) => id === sp.value));\n\n if (selected.length > 2) {\n return `${selected.length} ${plural}`;\n } else {\n return selected.map((sp) => sp.name).join(', ');\n }\n }),\n );\n\n this.digitalagentsFilterDisplay$ = combineLatest([\n this.digitalagentsOptions$,\n this.selectedDigitalAgentsUserIds$,\n this.translate.stream('FRONTEND.LOOP.FILTERS.TASK_MANAGER_USERS'),\n ]).pipe(\n map(([options, selectedIds, plural]) => {\n const selected = options.filter((da) => selectedIds.some((id) => id === da.value));\n\n if (selected.length > 2) {\n return `${selected.length} ${plural}`;\n } else {\n return selected.map((da) => da.name).join(', ');\n }\n }),\n );\n\n this.salesTeamOptions$ = this.loggedInUserInfoService.loggedInUserInfo$.pipe(\n take(1),\n switchMap((userInfo) => {\n return this.salesTeamService.list(userInfo.partnerId, userInfo.marketId, '', 5000);\n }),\n catchError((err) => {\n console.error(err);\n return of(null);\n }),\n map((resp) => {\n if (!resp?.results) {\n return [];\n }\n return resp.results.map((team) => ({\n name: team.teamName,\n value: team.groupId,\n }));\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.salesTeamFilterDisplay$ = combineLatest([this.salesTeamOptions$, this.selectedSalesTeam$]).pipe(\n map(([salesTeamOptions, selectedSalesTeam]) => {\n if (!selectedSalesTeam) {\n return '';\n }\n const team = salesTeamOptions.find((m) => selectedSalesTeam.value === m.value);\n return team.name;\n }),\n );\n\n this.selectedSalesTeamMemberUserIds$ = this.selectedSalesTeam$.pipe(\n switchMap((selectedSalesTeam) => {\n if (!selectedSalesTeam) {\n return of([]);\n }\n return this.salesTeamService\n .getMembers(selectedSalesTeam.value)\n .pipe(map((salespeople) => (salespeople || []).map((sp) => sp.userId)));\n }),\n );\n\n this.filteringUserIds$ = combineLatest([\n this.selectedSalespeopleUserIds$,\n this.selectedSalesTeamMemberUserIds$,\n this.selectedDigitalAgentsUserIds$,\n this.loopOptions$,\n ]).pipe(\n map(([selectedSalespeopleUserIds, selectedSalesTeamMemberUserIds, selectedDigitalAgentsUserIds, loopOptions]) => {\n let selectedUserIds = selectedSalespeopleUserIds || [];\n if (loopOptions?.forcedFilters?.userId) {\n selectedUserIds = [loopOptions?.forcedFilters.userId];\n } else if (selectedSalesTeamMemberUserIds?.length > 0) {\n selectedUserIds = selectedUserIds.concat(selectedSalesTeamMemberUserIds);\n }\n if (selectedDigitalAgentsUserIds?.length > 0) {\n selectedUserIds = selectedUserIds.concat(selectedDigitalAgentsUserIds);\n }\n return selectedUserIds;\n }),\n );\n\n this.channelOptions$ = this.loopOptions$.pipe(\n switchMap((loopOptions) => {\n if (loopOptions?.forcedChannel) {\n return of([]);\n }\n return this.loopService.getChannels();\n }),\n map((channels) => {\n channels = channels.map((c) => ({ name: c, value: c }));\n channels.unshift(ALL_CHANNELS_OPTION);\n return channels;\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.loopOptions$\n .pipe(\n switchMap((loopOptions) =>\n this.loopService.listPostTypes(\n loopOptions?.forcedChannel ? { channel: loopOptions.forcedChannel } : null,\n '',\n 1000,\n ),\n ),\n tap((resp) => this.postTypes$$.next(resp.results.map((postType) => postType))),\n take(1),\n )\n .subscribe();\n\n this.postTypes$\n .pipe(\n map((postTypes) => {\n const filters = new Map();\n postTypes.forEach((postType) => {\n (postType.filters || []).forEach((filter) => {\n const filterId = postType.typeId + '::' + filter.value.id;\n filters.set(filterId, {\n id: filterId,\n typeId: postType.typeId,\n title: filter.label,\n options: filter.options.map((o) => ({ name: o.id, value: o.value })),\n });\n this.resourceFiltersSelectedValues.set(\n filterId,\n new BehaviorSubject({ id: filterId, values: [] }),\n );\n });\n });\n\n this.resourceFiltersMap$$.next(filters);\n }),\n take(1),\n )\n .subscribe();\n\n this.resourceFilters$ = combineLatest([\n this.postTypes$,\n this.resourceFiltersMap$,\n this.loopOptions$,\n this.selectedChannel$,\n this.channelOptions$,\n ]).pipe(\n map(([postTypes, resourceFiltersMap, loopOptions, selectedChannel, channelOptions]) => {\n if (!loopOptions?.forcedChannel && !selectedChannel && channelOptions.length > 2) {\n // do not show resource filters if multiple channels are being shown (channelOptions includes ALL CHANNELS always)\n return [];\n }\n const postTypeIdFilters = this.getPostTypeIdsForSelectedChannel(postTypes, selectedChannel);\n const results = [];\n for (const v of resourceFiltersMap.values()) {\n if (postTypeIdFilters.some((t) => t === v.typeId)) {\n results.push(v);\n }\n }\n return results;\n }),\n );\n\n this.dateRangeFilterDisplay$ = this.dateRangeService.getFilter().pipe(\n map((filter) => {\n if (!filter) {\n return '';\n }\n return this.translate.instant(filter.i18nKey);\n }),\n );\n\n this.initializeSavedFilters();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((s) => s.unsubscribe());\n }\n\n getSelectedMarket(): FilterOption {\n return this.selectedMarket$$.getValue();\n }\n\n setSelectedMarket(market: FilterOption): void {\n this.selectedMarket$$.next(market);\n }\n\n getSelectedSalespeopleUserIds(): string[] {\n return this.selectedSalespeopleUserIds$$.getValue();\n }\n\n getSelectedDigitalAgentsUserIds(): string[] {\n return this.selectedDigitalAgentsUserIds$$.getValue();\n }\n\n setSelectedDigitalAgentsUserIds(userIds: string[]): void {\n this.selectedDigitalAgentsUserIds$$.next(userIds);\n }\n\n setSelectedSalespeopleUserIds(userIds: string[]): void {\n this.selectedSalespeopleUserIds$$.next(userIds);\n }\n\n getSelectedSalesTeam(): FilterOption {\n return this.selectedSalesTeam$$.getValue();\n }\n\n setSelectedSalesTeam(team: FilterOption): void {\n this.selectedSalesTeam$$.next(team);\n }\n\n setSelectedDateRange(dateRange: ListPostsRequestDateRangeFilterInterface): void {\n this.selectedDateRange$$.next(dateRange);\n }\n\n getSelectedDateRange(): ListPostsRequestDateRangeFilterInterface {\n return this.selectedDateRange$$.getValue();\n }\n\n getSelectedresourceFilterValues(filterId: string): string[] {\n const selected$$ = this.resourceFiltersSelectedValues.get(filterId);\n if (selected$$ !== undefined) {\n return selected$$.getValue().values;\n }\n return [];\n }\n\n setSelectedResourceFilterValues(filterId: string, values: string[]): void {\n const selected$$ = this.resourceFiltersSelectedValues.get(filterId);\n if (selected$$ !== undefined) {\n selected$$.next({ id: filterId, values: values });\n }\n }\n\n getFilterDisplayForResourceFilter(filterId: string): Observable {\n const options$ = this.resourceFiltersMap$.pipe(\n map((resourceFilters) => resourceFilters.get(filterId)),\n map((resourceFilter) => (resourceFilter ? resourceFilter.options : [])),\n );\n let resourceFiltersSelectedValues$ = of({ id: filterId, values: [] });\n const resourceFiltersSelectedValues$$ = this.resourceFiltersSelectedValues.get(filterId);\n if (resourceFiltersSelectedValues$$ !== undefined) {\n resourceFiltersSelectedValues$ = resourceFiltersSelectedValues$$.asObservable();\n }\n const selectedIds$ = resourceFiltersSelectedValues$.pipe(\n map((resourceFiltersSelectedValues) => resourceFiltersSelectedValues.values),\n );\n return combineLatest([options$, selectedIds$, this.translate.stream('FRONTEND.LOOP.VALUES')]).pipe(\n map(([options, selectedIds, plural]) => {\n const selected = options.filter((sp) => selectedIds.some((id) => id === sp.value));\n\n if (selected.length > 2) {\n return `${selected.length} ${plural}`;\n } else {\n return selected.map((sp) => sp.name).join(', ');\n }\n }),\n );\n }\n\n setSelectedChannel(channel: string): void {\n this.selectedChannel$$.next(channel);\n // Reset channel specific filters when changing channels\n [...this.resourceFiltersSelectedValues.values()].forEach((x) => {\n const current = x.getValue();\n x.next({ id: current.id, values: [] });\n });\n }\n\n getSelectedChannel(): string {\n return this.selectedChannel$$.getValue();\n }\n\n public initialize(loopOptions: LoopOptions): void {\n this.id = loopOptions?.instanceId || 'default';\n this.compact = loopOptions?.compact;\n if (loopOptions?.pageSize && loopOptions?.pageSize > 0) {\n this.pageSize = loopOptions.pageSize;\n }\n this.loopOptions$$.next(loopOptions);\n const initialFilters$ = this.loadInitialFilters().pipe(publishReplay(1), refCount());\n initialFilters$.pipe(take(1)).subscribe();\n\n this.subscriptions.push(\n combineLatest([initialFilters$, this.dateRangeService.getFilter()])\n .pipe(\n tap(([, filter]) => {\n if (!filter) {\n return;\n }\n this.selectedDateRangeKey = this.dateRangeService.getKey();\n this.setSelectedDateRange({\n beginRange: filter.start,\n endRange: filter.end,\n });\n this.listPosts(true);\n }),\n )\n .subscribe(),\n );\n }\n\n applyFilters(serialized: string): Observable {\n if (!serialized) {\n this.dateRangeService.setKey(DateFilterOptions.SixMonth);\n return of(true);\n }\n\n const appliedFilters: AppliedFilters = JSON.parse(serialized);\n if (appliedFilters) {\n const initialFieldsSet$ = combineLatest([\n this.marketOptions$,\n this.salespeopleOptions$,\n this.salesTeamOptions$,\n this.digitalagentsOptions$,\n this.channelOptions$,\n ]).pipe(\n tap(([marketOptions, salespeopleOptions, salesTeamOptions, daOptions, channelOptions]) => {\n if (marketOptions.some((o) => o.value === appliedFilters.market?.value)) {\n this.setSelectedMarket(appliedFilters.market);\n }\n\n this.setSelectedSalespeopleUserIds(\n (appliedFilters.salespeopleUserIds || []).filter((id) => salespeopleOptions.some((o) => o.value === id)),\n );\n\n if (salesTeamOptions.some((o) => o.value === appliedFilters.salesTeam?.value)) {\n this.setSelectedSalesTeam(appliedFilters.salesTeam);\n }\n\n this.setSelectedDigitalAgentsUserIds(\n (appliedFilters.digitalagentsUserIds || []).filter((id) => daOptions.some((o) => o.value === id)),\n );\n\n if (channelOptions.some((o) => o.value === appliedFilters.channel)) {\n this.setSelectedChannel(appliedFilters.channel);\n }\n }),\n );\n\n // only apply resource filters after channel has been selected\n return combineLatest([initialFieldsSet$, this.resourceFiltersMap$]).pipe(\n tap(([, resourceFiltersMap]) => {\n (appliedFilters.resourceFilters || []).forEach((f) => {\n const resourceFilter = resourceFiltersMap.get(f.id);\n if (resourceFilter) {\n this.setSelectedResourceFilterValues(\n f.id,\n (f.values || []).filter((id) => resourceFilter.options.some((o) => o.value === id)),\n );\n }\n });\n }),\n // setting dateRange must be last as it triggers listPosts\n tap(() => {\n if (appliedFilters.dateRangeKey === DateFilterOptions.Custom) {\n this.dateRangeService.setAsCustom({\n start: moment(appliedFilters.dateRange.beginRange),\n end: moment(appliedFilters.dateRange.endRange),\n });\n } else {\n this.dateRangeService.setKey(appliedFilters.dateRangeKey);\n }\n }),\n map(() => {\n return true;\n }),\n );\n } else {\n // date range requires a default if nothing else set\n this.dateRangeService.setKey(DateFilterOptions.SixMonth);\n return of(true);\n }\n }\n\n loadInitialFilters(): Observable {\n const serializedFilters = this.getInitialFilters();\n return this.applyFilters(serializedFilters);\n }\n\n listPosts(replace: boolean): void {\n if (replace) {\n this.nextCursor = '';\n this.posts$$.next([]);\n }\n this.loading$$.next(true);\n combineLatest([\n this.partnerId$,\n this.filteringMarketIds$,\n this.filteringUserIds$,\n this.postTypes$,\n this.selectedChannel$,\n this.selectedDateRange$,\n ])\n .pipe(\n take(1),\n switchMap(([partnerId, marketIds, userIds, postTypes, selectedChannel, dateRange]) => {\n const resourceFiltersSelectedValues = [...this.resourceFiltersSelectedValues.values()].map((v) =>\n v.getValue(),\n );\n const resourceFilters: string[] = [];\n resourceFiltersSelectedValues.forEach((selectedValues) =>\n selectedValues.values.forEach((value) => {\n resourceFilters.push(selectedValues.id + '::' + value);\n }),\n );\n\n const request: ListPostsRequestInterface = {\n partnerId: partnerId,\n marketIds: marketIds,\n userIds: userIds,\n resourceFilters: resourceFilters,\n postTypeIds: this.getPostTypeIdsForSelectedChannel(postTypes, selectedChannel),\n dateRange: dateRange,\n pagingOptions: {\n pageSize: this.pageSize,\n cursor: this.nextCursor,\n },\n renderOption: this.compact ? RenderOption.RENDER_OPTION_COMPACT : RenderOption.RENDER_OPTION_FULL,\n };\n this.saveFilter(MAIN_FILTER);\n return this.loopService.listPosts(request);\n }),\n finalize(() => this.loading$$.next(false)),\n )\n .subscribe(\n (resp: ListPostsResponseInterface) => {\n this.nextCursor = resp.pagingMetadata.nextCursor;\n if (replace) {\n this.posts$$.next(resp.posts || []);\n } else {\n if ((resp.posts || []).length > 0) {\n this.posts$$.next(this.posts$$.value.concat(resp.posts));\n }\n }\n this.hasMore$$.next(resp.pagingMetadata.hasMore);\n },\n (error) => {\n console.error(error);\n this.alertService.openErrorSnack('FRONTEND.LOOP.ERRORS.ERROR_LOADING_POSTS');\n },\n );\n }\n\n nextPage(): void {\n if (!this.loading$$.getValue()) {\n this.listPosts(false);\n }\n }\n\n getPostTypeIdsForSelectedChannel(postTypes: PostType[], selectedChannel: string): string[] {\n const results = [];\n postTypes.forEach((pt) => {\n if (!selectedChannel || selectedChannel === pt.channel) {\n results.push(pt.typeId);\n }\n });\n return results;\n }\n\n getLoopFilterId(): string {\n return THE_LOOP + this.id;\n }\n\n getInitialFilters(): string {\n const params = this.route.snapshot.queryParams;\n if (params[this.getLoopFilterId()]) {\n return decodeURIComponent(params[this.getLoopFilterId()]);\n }\n\n const localStorageFilters = this.localStorageService.get(this.getLoopFilterId());\n if (!localStorageFilters) {\n return '';\n }\n\n const currentFilters: SavedFilter[] = JSON.parse(localStorageFilters);\n const mainFilter = currentFilters.find((filter) => filter.name === MAIN_FILTER);\n if (mainFilter) {\n return mainFilter.serializedFields;\n }\n\n return '';\n }\n\n initializeSavedFilters(): void {\n const savedFiltersStorage = this.localStorageService.get(this.getLoopFilterId());\n\n this.savedFilters$ = this.savedFilters$$.asObservable().pipe(map((s) => s.filter((f) => f.name !== MAIN_FILTER)));\n\n if (!savedFiltersStorage) {\n return;\n }\n\n const savedFilters = JSON.parse(savedFiltersStorage);\n this.savedFilters$$.next(savedFilters);\n }\n\n private applyFiltersToURL(filter: SavedFilter): void {\n if (this.compact) {\n return;\n }\n const p = {};\n p[this.getLoopFilterId()] = filter.serializedFields;\n this.urlParamService.applyParams(p);\n }\n\n private saveFiltersToStorage(filters: SavedFilter[]): void {\n this.localStorageService.set(this.getLoopFilterId(), JSON.stringify(filters));\n this.savedFilters$$.next(filters);\n }\n\n selectFilter(filter: SavedFilter): void {\n this.applyFiltersToURL(filter);\n // TODO: Fix loading resources and multiple loads of saved filters\n this.applyFilters(filter.serializedFields).pipe(take(1)).subscribe();\n }\n\n saveFilter(filter: string): void {\n // Cannot create filter with empty name\n if (!filter) {\n this.alertService.openErrorSnack('FRONTEND.LOOP.ERRORS.CREATE_EMPTY_FILTER_ERROR');\n return;\n }\n\n const resourceFiltersSelectedValues = [...this.resourceFiltersSelectedValues.values()].map((v) => v.getValue());\n const appliedFilters: AppliedFilters = {\n market: this.getSelectedMarket(),\n salespeopleUserIds: this.getSelectedSalespeopleUserIds(),\n digitalagentsUserIds: this.getSelectedDigitalAgentsUserIds(),\n salesTeam: this.getSelectedSalesTeam(),\n resourceFilters: resourceFiltersSelectedValues,\n dateRangeKey: this.selectedDateRangeKey,\n dateRange: this.getSelectedDateRange(),\n channel: this.getSelectedChannel(),\n };\n\n const serializedFilters = JSON.stringify(appliedFilters);\n const newFilter: SavedFilter = {\n name: filter,\n serializedFields: serializedFilters,\n expiry: null,\n };\n\n const currentFilters = this.savedFilters$$.getValue();\n const foundFilter = currentFilters.findIndex((f) => f.name === newFilter.name);\n if (foundFilter !== -1) {\n currentFilters[foundFilter] = newFilter;\n } else {\n currentFilters.push(newFilter);\n }\n\n this.applyFiltersToURL(newFilter);\n this.saveFiltersToStorage(currentFilters);\n }\n\n removeFilter(filter: string): void {\n const currentFilters = this.savedFilters$$.getValue();\n const foundFilter = currentFilters.findIndex((f) => f.name === filter);\n\n // If not found, nothing to remove\n if (foundFilter === -1) {\n this.alertService.openErrorSnack('FRONTEND.LOOP.ERRORS.REMOVE_FILTER_ERROR');\n return;\n }\n\n currentFilters.splice(foundFilter, 1);\n\n this.saveFiltersToStorage(currentFilters);\n }\n\n private armResultToFilterOption(result: DigitalAgentApiInterface): FilterOption {\n let firstName = '';\n let lastName = '';\n const filterUser: FilterOption = {\n name: '',\n value: result._user_id,\n };\n if (result.first_name) {\n firstName = result.first_name;\n }\n if (result.last_name) {\n lastName = result.last_name;\n }\n filterUser.name = !!firstName || !!lastName ? [firstName, lastName].join(' ') : result.email;\n return filterUser;\n }\n\n getHost(): string {\n const env = this.environmentService.getEnvironment();\n switch (env) {\n case Environment.DEMO:\n return 'https://arm-demo.appspot.com/';\n case Environment.PROD:\n return 'https://task-manager.biz/';\n default:\n return 'https://arm-demo.appspot.com/';\n }\n }\n\n getPartnerAssignees(partnerId: string): Observable> {\n const apiOptions = {\n withCredentials: true,\n params: new HttpParams().set('partnerId', partnerId),\n };\n\n return this.http.get>(\n this.getHost() + 'internalApi/v3/user/assignees/',\n apiOptions,\n );\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n SecurityContext,\n ViewChild,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeStyle } from '@angular/platform-browser';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { User } from '@vendasta/iam';\nimport { PostIdentifier, PostInterface, TheLoopService } from '@vendasta/the-loop';\nimport moment from 'moment';\nimport { Observable } from 'rxjs';\nimport { finalize, map, take } from 'rxjs/operators';\n\n@Component({\n selector: 'sales-common-loop-v2-post',\n templateUrl: './post.component.html',\n styleUrls: ['./post.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('readMore', [\n state('collapsed', style({ maxHeight: '200px' })),\n state('expanded', style({ maxHeight: '5000px' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n})\nexport class PostComponent implements OnInit, AfterViewInit {\n @ViewChild('body', { read: ElementRef, static: false }) body: ElementRef;\n\n @Input() post: PostInterface;\n @Input() currentUser: User;\n @Input() compact = false;\n\n @Output() postClicked = new EventEmitter();\n\n reacting = false;\n followingLoading = false;\n\n likeText = '';\n likeTooltip = '';\n hasLiked = false;\n isFollowing = false;\n safeHtml: SafeHtml;\n safeStyles: SafeStyle;\n expanded = false;\n expandable = false;\n readMoreAnimating = false;\n shareURL = '';\n\n postIconSize$: Observable;\n commentIconSize$: Observable;\n\n constructor(\n private readonly loopService: TheLoopService,\n private readonly translate: TranslateService,\n private cdr: ChangeDetectorRef,\n private alertService: SnackbarService,\n private readonly sanitizer: DomSanitizer,\n private readonly breakpointObserver: BreakpointObserver,\n private clipboard: Clipboard,\n ) {}\n\n ngOnInit(): void {\n this.safeHtml = this.sanitizer.sanitize(SecurityContext.HTML, this.post?.html);\n this.safeStyles = this.post?.style ? this.sanitizer.bypassSecurityTrustHtml(this.post?.style) : null;\n this.computeValues();\n\n const breakpointObserver$ = this.breakpointObserver.observe(['(max-width: 600px)']);\n\n this.postIconSize$ = breakpointObserver$.pipe(map((result) => (result.matches ? '36' : '50')));\n this.commentIconSize$ = breakpointObserver$.pipe(map((result) => (result.matches ? '32' : '40')));\n }\n\n ngAfterViewInit(): void {\n this.calculateReadMore();\n\n const listener = (e) => {\n this.calculateReadMore();\n e.target.removeEventListener('load', listener);\n };\n\n const imgs = this.body.nativeElement.querySelectorAll('img');\n for (const img of imgs) {\n img.addEventListener('load', listener);\n }\n }\n\n calculateReadMore(): void {\n this.expandable = this.body.nativeElement.offsetHeight >= 200;\n\n this.cdr.detectChanges();\n }\n\n computeValues(): void {\n this.likeText = this.computeLikeText();\n this.hasLiked = this.computeHasLiked();\n this.isFollowing = this.computeIsFollowing();\n this.likeTooltip = this.computeLikeTooltip();\n this.shareURL = this.computeShareURL();\n }\n\n fromNow(date: Date): string {\n return moment(date).fromNow();\n }\n\n computeLikeText(): string {\n if ((this.post?.likes || []).length === 0) {\n return this.translate.instant('FRONTEND.LOOP.LIKE');\n }\n return (this.post?.likes || []).length + ' ' + this.translate.instant('FRONTEND.LOOP.LIKES');\n }\n\n computeLikeTooltip(): string {\n let tooltip = '';\n const likes = this.post?.likes || [];\n\n if (!likes.length) {\n return tooltip;\n }\n\n for (let i = 0; i < Math.min(likes.length, 10); i += 1) {\n const like = likes[i];\n if (like.firstName && !like.lastName) {\n tooltip += `${like.firstName}\\n`;\n continue;\n }\n\n tooltip += `${like.firstName} ${like.lastName}\\n`;\n }\n\n if (likes.length > 10) {\n tooltip += `\\n${likes.length - 10} ${this.translate.instant('FRONTEND.LOOP.MORE_LIKES_TEXT')}`;\n }\n\n return tooltip;\n }\n\n computeHasLiked(): boolean {\n return (this.post?.likes || []).some((l) => l.userId === this.currentUser.userId);\n }\n\n computeIsFollowing(): boolean {\n return this.post?.isSubscribed || false;\n }\n\n computeShareURL(): string {\n const { protocol, host, pathname } = window.location;\n const { typeId, postId } = this.post?.postIdentifier ?? null;\n\n const typePath = `/type/${typeId}`;\n let shareUrl = `${protocol}//${host}${pathname}`;\n if (!pathname.includes(typePath)) {\n shareUrl += `${typePath}?postId=${encodeURIComponent(postId)}`;\n } else {\n shareUrl += `?postId=${encodeURIComponent(postId)}`;\n }\n\n return shareUrl;\n }\n\n reloadSubscription(identifier: PostIdentifier): void {\n this.followingLoading = true;\n this.loopService\n .getPost(identifier.typeId, identifier.postId)\n .pipe(\n take(1),\n finalize(() => {\n this.followingLoading = false;\n this.cdr.detectChanges();\n }),\n )\n .subscribe(\n (post) => {\n this.post.isSubscribed = post.isSubscribed;\n this.computeValues();\n this.cdr.detectChanges();\n },\n (error) => {\n console.error(error);\n },\n );\n }\n\n like(): void {\n const { typeId, postId } = this.post?.postIdentifier ?? null;\n\n this.reacting = true;\n if (this.hasLiked) {\n this.loopService\n .unlike(typeId, postId)\n .pipe(\n take(1),\n finalize(() => {\n this.reacting = false;\n this.cdr.detectChanges();\n }),\n )\n .subscribe(\n () => {\n this.post.likes = (this.post.likes || []).filter((l) => l.userId !== this.currentUser.userId);\n this.computeValues();\n this.cdr.detectChanges();\n },\n (error) => {\n console.error(error);\n this.alertService.openErrorSnack('FRONTEND.LOOP.ERRORS.ERROR_UNLIKING_POST');\n },\n );\n } else {\n this.loopService\n .like(typeId, postId)\n .pipe(\n take(1),\n finalize(() => {\n this.reacting = false;\n this.cdr.detectChanges();\n }),\n )\n .subscribe(\n (user) => {\n this.post.likes = this.post.likes || [];\n this.post.likes.push(user);\n this.computeValues();\n this.reloadSubscription(\n new PostIdentifier({\n typeId,\n postId,\n }),\n );\n this.cdr.detectChanges();\n },\n (error) => {\n console.error(error);\n this.alertService.openErrorSnack('FRONTEND.LOOP.ERRORS.ERROR_LIKING_POST');\n },\n );\n }\n }\n\n follow(): void {\n this.followingLoading = true;\n this.loopService\n .subscribe(this.post?.postIdentifier.typeId, this.post?.postIdentifier.postId)\n .pipe(\n take(1),\n finalize(() => {\n this.followingLoading = false;\n this.cdr.detectChanges();\n }),\n )\n .subscribe(\n () => {\n this.post.isSubscribed = true;\n this.computeValues();\n this.cdr.detectChanges();\n },\n (error) => {\n console.error(error);\n this.alertService.openErrorSnack('FRONTEND.LOOP.ERRORS.ERROR_FOLLOWING_POST');\n },\n );\n }\n\n unfollow(): void {\n this.followingLoading = true;\n this.loopService\n .unsubscribe(this.post?.postIdentifier.typeId, this.post?.postIdentifier.postId)\n .pipe(\n take(1),\n finalize(() => {\n this.followingLoading = false;\n this.cdr.detectChanges();\n }),\n )\n .subscribe(\n () => {\n this.post.isSubscribed = false;\n this.computeValues();\n this.cdr.detectChanges();\n },\n (error) => {\n console.error(error);\n this.alertService.openErrorSnack('FRONTEND.LOOP.ERRORS.ERROR_UNFOLLOWING_POST');\n },\n );\n }\n\n share(): void {\n this.clipboard.copy(this.shareURL);\n this.alertService.openSuccessSnack('FRONTEND.LOOP.COPIED_TO_CLIPBOARD');\n }\n\n expand(): void {\n this.expanded = !this.expanded;\n this.cdr.detectChanges();\n }\n\n clickedPost(): void {\n this.postClicked.emit(new PostIdentifier(this.post.postIdentifier));\n }\n}\n","
\n \n \n
\n \n
\n
\n
\n \n
\n {{ post.created | date : 'MMM dd, y - h:mm a' }} ({{ fromNow(post.created) }})\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n \n \n thumb_up\n {{ likeText }}\n \n \n
\n
\n
\n \n
\n \n \n add_alert\n {{ 'FRONTEND.LOOP.FOLLOW' | translate }}\n \n \n \n notifications_active\n {{ 'FRONTEND.LOOP.FOLLOWING' | translate }}\n \n \n \n
\n\n
\n \n share\n {{ 'FRONTEND.LOOP.SHARE' | translate }}\n \n
\n
\n
\n\n \n
\n \n \n\n\n\n
\n \n
\n
\n
\n {{ post.created | date : 'MMM dd, y - h:mm a' }} ({{ fromNow(post.created) }})\n
\n
\n
\n
\n\n\n
\n \n
\n \n {{ icon.matIcon }}\n \n
\n\n \n \n \n
\n \n
\n all_inclusive\n
\n
\n
\n
\n","import { Component, EventEmitter, Inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FilterGroup } from '@vendasta/va-filter2';\nimport { combineLatest, Observable, of, Subscription } from 'rxjs';\nimport {\n DisplayFilter,\n FilterConfig,\n FilterOption,\n LoopOptions,\n LoopV2FiltersService,\n} from './loop-v2-filters.service';\nimport { map, switchMap } from 'rxjs/operators';\nimport { PostIdentifier, PostInterface } from '@vendasta/the-loop';\nimport { IAMService, User } from '@vendasta/iam';\nimport { SessionService } from '@galaxy/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SingleSelectionDialogComponent } from './filter-dialogs/single-selection-dialog/single-selection-dialog.component';\nimport { MultiSelectionDialogComponent } from './filter-dialogs/multi-selection-dialog/multi-selection-dialog.component';\nimport { DateRangeSelectorComponent, SavedFilter } from '@vendasta/uikit';\n\ninterface PostsData {\n loading: boolean;\n posts: PostInterface[];\n}\n\n@Component({\n selector: 'sales-common-loop-v2-filters',\n templateUrl: './loop-v2-filters.component.html',\n styleUrls: ['./loop-v2-filters.component.scss'],\n providers: [LoopV2FiltersService],\n})\nexport class LoopV2FiltersComponent implements OnInit, OnDestroy {\n @Input() loopOptions: LoopOptions;\n\n // These clicked events are emitted when showing the compact loop\n @Output() individualPostClicked = new EventEmitter();\n @Output() viewAllClicked = new EventEmitter();\n\n filter: FilterGroup;\n filterItems: DisplayFilter[] = [];\n savedFilters$: Observable = this.service.savedFilters$;\n\n postsData$: Observable;\n hasMore$: Observable = this.service.hasMore$;\n resourceFilters$: Observable = this.service.resourceFilters$;\n hasFilters$: Observable;\n\n user$: Observable;\n channelOptions$: Observable = this.service.channelOptions$;\n currentChannel$: Observable = combineLatest([\n this.service.channelOptions$,\n this.service.selectedChannel$,\n ]).pipe(map(([channelOptions, selectedChannel]) => channelOptions.find((o) => o.value === selectedChannel)));\n\n subscriptions: Subscription[] = [];\n\n constructor(\n private readonly dialog: MatDialog,\n private readonly service: LoopV2FiltersService,\n @Inject('partnerId$') private readonly partnerId$: Observable,\n private readonly iam: IAMService,\n private sessionService: SessionService,\n ) {\n this.postsData$ = combineLatest([this.service.loading$, this.service.posts$]).pipe(\n map(([loading, posts]) => ({\n loading: loading,\n posts: posts,\n })),\n );\n\n this.hasFilters$ = this.resourceFilters$.pipe(\n map(\n (resourceFilters) =>\n !this.loopOptions?.forcedFilters?.marketIds ||\n !this.loopOptions?.forcedFilters?.userId ||\n resourceFilters.length > 0,\n ),\n );\n }\n\n ngOnInit(): void {\n this.addOrUpdateFilterItem(\n 'date-range-filter',\n 'FRONTEND.LOOP.FILTERS.DATE_RANGE.TYPE',\n null,\n this.service.dateRangeFilterDisplay$,\n );\n\n if (!this.loopOptions?.forcedFilters?.marketIds) {\n this.addOrUpdateFilterItem('market-filter', 'FRONTEND.LOOP.MARKET', null, this.service.marketFilterDisplay$);\n }\n\n if (!this.loopOptions?.forcedFilters?.userId) {\n this.addOrUpdateFilterItem(\n 'salespeople-filter',\n 'FRONTEND.LOOP.FILTERS.SALESPEOPLE',\n null,\n this.service.salespeopleFilterDisplay$,\n );\n\n this.addOrUpdateFilterItem(\n 'sales-team-filter',\n 'FRONTEND.LOOP.FILTERS.SALES_TEAM',\n null,\n this.service.salesTeamFilterDisplay$,\n );\n\n this.addOrUpdateFilterItem(\n 'digitalagents-filter',\n 'FRONTEND.LOOP.FILTERS.TASK_MANAGER_USERS',\n null,\n this.service.digitalagentsFilterDisplay$,\n );\n }\n\n this.subscriptions.push(\n this.service.resourceFilters$\n .pipe(\n map((resourceFilters) =>\n resourceFilters.forEach((resourceFilter) => {\n this.addOrUpdateFilterItem(\n resourceFilter.id,\n resourceFilter.title,\n null,\n this.service.getFilterDisplayForResourceFilter(resourceFilter.id),\n );\n }),\n ),\n )\n .subscribe(),\n );\n\n this.user$ = combineLatest([this.partnerId$, this.sessionService.getSessionId()]).pipe(\n switchMap(([partnerId, session]) => {\n return this.iam.getMultiUsers([\n {\n namespacedSession: {\n namespace: partnerId,\n session: session,\n },\n },\n ]);\n }),\n map((userIds) => {\n return userIds[0];\n }),\n );\n this.service.initialize(this.loopOptions);\n }\n\n public loadMore(): void {\n this.service.nextPage();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((s) => s.unsubscribe());\n }\n\n addOrUpdateFilterItem(\n filterId: string,\n filterTypeTranslateKey: string,\n value: string,\n value$?: Observable,\n ): void {\n const foundFilter = this.filterItems.filter((item) => item.filterId === filterId);\n if (foundFilter.length > 0) {\n foundFilter[0].displayName = value;\n this.filterItems[this.filterItems.findIndex((el) => el.filterId === filterId)] = foundFilter[0];\n return;\n }\n this.filterItems.push({\n filterId: filterId,\n filterTypeTranslateKey: filterTypeTranslateKey,\n displayName: value,\n displayName$: value$,\n });\n }\n\n removeFilterItem(filterId: string): void {\n if (filterId === 'market-filter') {\n this.service.setSelectedMarket(null);\n } else if (filterId === 'salespeople-filter') {\n this.service.setSelectedSalespeopleUserIds([]);\n } else if (filterId === 'sales-team-filter') {\n this.service.setSelectedSalesTeam(null);\n } else if (filterId === 'digitalagents-filter') {\n this.service.setSelectedDigitalAgentsUserIds([]);\n } else {\n this.service.setSelectedResourceFilterValues(filterId, []);\n }\n this.service.listPosts(true);\n }\n\n selectFilterItem(filterId: string): void {\n if (filterId === 'market-filter') {\n this.openMarketDialog();\n } else if (filterId === 'salespeople-filter') {\n this.openSalespeopleDialog();\n } else if (filterId === 'digitalagents-filter') {\n this.openDigitalAgentsDialog();\n } else if (filterId === 'sales-team-filter') {\n this.openSalesTeamDialog();\n } else if (filterId === 'date-range-filter') {\n this.openDateRangeDialog();\n } else {\n this.openResourceFilterDialog(filterId);\n }\n }\n\n openMarketDialog(): void {\n const dialogRef = this.dialog.open(SingleSelectionDialogComponent, {\n width: '400px',\n data: {\n selected: this.service.getSelectedMarket(),\n options: this.service.marketOptions$,\n title: 'FRONTEND.LOOP.MARKET',\n placeholder: 'FRONTEND.LOOP.FILTERS.PLACEHOLDERS.MARKET',\n },\n id: 'market-selector',\n });\n this.subscriptions.push(\n dialogRef.afterClosed().subscribe((result) => {\n if (typeof result !== 'undefined') {\n this.service.setSelectedMarket(result);\n this.service.listPosts(true);\n }\n }),\n );\n }\n\n openSalespeopleDialog(): void {\n const dialogRef = this.dialog.open(MultiSelectionDialogComponent, {\n width: '400px',\n data: {\n selected: this.service.getSelectedSalespeopleUserIds(),\n options: this.service.salespeopleOptions$,\n title: 'FRONTEND.LOOP.FILTERS.SALESPEOPLE',\n placeholder: 'FRONTEND.LOOP.FILTERS.PLACEHOLDERS.SALESPEOPLE',\n },\n id: 'salespeople-selector',\n });\n this.subscriptions.push(\n dialogRef.afterClosed().subscribe((results) => {\n if (typeof results !== 'undefined') {\n this.service.setSelectedSalespeopleUserIds(results);\n this.service.listPosts(true);\n }\n }),\n );\n }\n\n openDigitalAgentsDialog(): void {\n const dialogRef = this.dialog.open(MultiSelectionDialogComponent, {\n width: '400px',\n data: {\n selected: this.service.getSelectedDigitalAgentsUserIds(),\n options: this.service.digitalagentsOptions$,\n title: 'FRONTEND.LOOP.FILTERS.TASK_MANAGER_USERS',\n placeholder: 'FRONTEND.LOOP.FILTERS.PLACEHOLDERS.TASK_MANAGER_USERS',\n },\n id: 'digitalagents-selector',\n });\n this.subscriptions.push(\n dialogRef.afterClosed().subscribe((results) => {\n if (results) {\n this.service.setSelectedDigitalAgentsUserIds(results);\n this.service.listPosts(true);\n }\n }),\n );\n }\n\n openSalesTeamDialog(): void {\n const dialogRef = this.dialog.open(SingleSelectionDialogComponent, {\n width: '400px',\n data: {\n selected: this.service.getSelectedSalesTeam(),\n options: this.service.salesTeamOptions$,\n title: 'FRONTEND.LOOP.FILTERS.SALES_TEAM',\n placeholder: 'FRONTEND.LOOP.FILTERS.PLACEHOLDERS.SALES_TEAM',\n },\n id: 'sales-team-selector',\n });\n this.subscriptions.push(\n dialogRef.afterClosed().subscribe((result) => {\n if (typeof result !== 'undefined') {\n this.service.setSelectedSalesTeam(result);\n this.service.listPosts(true);\n }\n }),\n );\n }\n\n openDateRangeDialog(): void {\n this.dialog.open(DateRangeSelectorComponent, {\n id: 'date-range-selector',\n });\n }\n\n openResourceFilterDialog(resourceFilterId: string): void {\n const dialogRef$ = this.service.resourceFiltersMap$.pipe(\n map((resourceFilters) => resourceFilters.get(resourceFilterId)),\n map((resourceFilter) =>\n this.dialog.open(MultiSelectionDialogComponent, {\n width: '400px',\n data: {\n selected: this.service.getSelectedresourceFilterValues(resourceFilterId),\n options: of(resourceFilter.options),\n title: resourceFilter.title,\n placeholder: 'FRONTEND.LOOP.FILTERS.PLACEHOLDERS.SELECT_FILTERS',\n },\n id: resourceFilter.id,\n }),\n ),\n );\n this.subscriptions.push(\n dialogRef$.pipe(switchMap((dialogRef) => dialogRef.afterClosed())).subscribe((results) => {\n if (typeof results !== 'undefined') {\n this.service.setSelectedResourceFilterValues(resourceFilterId, results);\n this.service.listPosts(true);\n }\n }),\n );\n }\n\n selectChannel(channel: FilterOption): void {\n this.service.setSelectedChannel(channel.value);\n this.service.listPosts(true);\n }\n\n selectFilter(filter: SavedFilter): void {\n this.service.selectFilter(filter);\n }\n\n saveCurrentFilter(filter: string): void {\n this.service.saveFilter(filter);\n }\n\n removeSavedFilter(filter: string): void {\n this.service.removeFilter(filter);\n }\n\n clickedViewAll(): void {\n this.viewAllClicked.emit(true);\n }\n\n clickedPost(identifier: PostIdentifier): void {\n this.individualPostClicked.emit(identifier);\n }\n}\n","\n \n
\n
\n
\n filter_list\n
\n \n \n \n \n + {{ 'FRONTEND.LOOP.FILTER' | translate }}\n \n \n
\n\n \n \n \n \n {{ 'FRONTEND.LOOP.FILTERS.TASK_MANAGER_USERS' | translate }}...\n \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n @if (channelOptions$ | async; as channels) {\n \n @if (channels.length > 2) {\n @if (currentChannel$ | async; as currentChannel) {\n
\n \n \n \n \n {{ channel.name | translate }}\n \n \n \n
\n }\n }\n }\n
\n\n
\n \n \n \n
\n \n @if (postsData.posts?.length === 0) {\n
\n \n
\n {{ 'FRONTEND.LOOP.EMPTY' | translate }}\n
\n
\n
\n }\n
\n \n
\n\n
\n \n
\n \n \n
\n \n
\n
\n all_inclusive\n {{ 'FRONTEND.LOOP.RECENT_POSTS' | translate }}\n
\n \n \n @if (postsData.posts?.length === 0) {\n
\n \n
\n {{ 'FRONTEND.LOOP.EMPTY' | translate }}\n
\n
\n
\n }\n
\n
\n \n
\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n","import { Component, Inject, Input, OnInit } from '@angular/core';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { map, switchMap, finalize, catchError } from 'rxjs/operators';\nimport { Post, TheLoopService } from '@vendasta/the-loop';\nimport { IAMService, User } from '@vendasta/iam';\nimport { SessionService } from '@galaxy/core';\n\n@Component({\n selector: 'sales-common-loop-v2-post-content',\n templateUrl: './post-content.component.html',\n styleUrls: ['./post-content.component.scss'],\n providers: [],\n})\nexport class PostContentComponent implements OnInit {\n @Input() postId = '';\n @Input() typeId = '';\n\n post$: Observable;\n user$: Observable;\n\n loading: boolean;\n\n constructor(\n private readonly service: TheLoopService,\n @Inject('partnerId$') private readonly partnerId$: Observable,\n private readonly iam: IAMService,\n private sessionService: SessionService,\n ) {}\n\n ngOnInit(): void {\n this.user$ = combineLatest([this.partnerId$, this.sessionService.getSessionId()]).pipe(\n switchMap(([partnerId, session]) => {\n return this.iam.getMultiUsers([\n {\n namespacedSession: {\n namespace: partnerId,\n session: session,\n },\n },\n ]);\n }),\n map((userIds) => {\n return userIds[0];\n }),\n );\n\n this.loading = true;\n this.post$ = this.service.getPost(this.typeId, this.postId).pipe(\n catchError((err) => {\n console.error(err);\n return of(null);\n }),\n finalize(() => {\n this.loading = false;\n }),\n );\n }\n}\n","\n \n \n \n \n
\n \n \n {{ 'FRONTEND.LOOP.ERRORS.ERROR_LOADING_POST.MSG' | translate }}\n \n \n
\n
\n\n
\n
\n
\n
\n
\n
\n","import { ClipboardModule } from '@angular/cdk/clipboard';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VaFormsModule } from '@vendasta/forms';\nimport {\n DateRangeSelectorModule,\n EmptyStateModule,\n VaCardsModule,\n VaFilterModule,\n VaIconModule,\n VaMultiSelectModule,\n VaSearchSelectModule,\n VaStencilsModule,\n} from '@vendasta/uikit';\nimport { FilterModule } from '@vendasta/va-filter2';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { PreferredCurrencyModule } from '../currency/preferred-currency.module';\nimport { VoiceDictationModule } from '../voice-dictation/voice-dictation.module';\nimport { CommentListComponent } from './comment-list/comment-list.component';\nimport { CommentComponent } from './comment/comment.component';\nimport { MultiSelectionDialogComponent } from './loop-v2-filters/filter-dialogs/multi-selection-dialog/multi-selection-dialog.component';\nimport { SingleSelectionDialogComponent } from './loop-v2-filters/filter-dialogs/single-selection-dialog/single-selection-dialog.component';\nimport { LoopFilterChipComponent } from './loop-v2-filters/loop-filter-chip/loop-filter-chip.component';\nimport { LoopV2FiltersComponent } from './loop-v2-filters/loop-v2-filters.component';\nimport { PostContentComponent } from './post-content/post-content.component';\nimport { PostComponent } from './post/post.component';\n\n@NgModule({\n imports: [\n CommonModule,\n VaMultiSelectModule,\n MatDatepickerModule,\n MatCardModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n VaSearchSelectModule,\n VaIconModule,\n VaStencilsModule,\n EmptyStateModule,\n VaFormsModule,\n FormsModule,\n ReactiveFormsModule,\n PreferredCurrencyModule,\n FilterModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'frontend/sales-common',\n baseTranslation: baseTranslation,\n }),\n MatProgressSpinnerModule,\n MatFormFieldModule,\n MatInputModule,\n InfiniteScrollModule,\n MatMenuModule,\n MatDialogModule,\n MatAutocompleteModule,\n DateRangeSelectorModule,\n ClipboardModule,\n VaFilterModule,\n VaCardsModule,\n VoiceDictationModule,\n ],\n declarations: [\n LoopV2FiltersComponent,\n PostComponent,\n CommentListComponent,\n CommentComponent,\n LoopFilterChipComponent,\n MultiSelectionDialogComponent,\n SingleSelectionDialogComponent,\n PostContentComponent,\n ],\n exports: [LoopV2FiltersComponent, PostContentComponent],\n})\nexport class LoopV2Module {}\n","const BASE_URL = '/internalApi/v2/sales-activity/';\n\nexport const SALES_ACTIVITY_URLS = {\n GET: BASE_URL + 'history/',\n COMMENT: BASE_URL + 'comment/',\n REACT: BASE_URL + 'react/',\n};\n","import moment from 'moment';\nimport { interval, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport enum ReactionType {\n LIKE = 'like',\n}\n\nexport type SalesPersonAction =\n | 'opportunity-closed-lost'\n | 'opportunity-closed-won'\n | 'opportunity-reopened'\n | 'opportunity-updated'\n | 'archived-business'\n | 'unarchived-business'\n | 'other'\n | 'inbound-message';\n\nexport interface SalesActivityBasicInfo {\n salesActivityId: string;\n salesPersonAction: SalesPersonAction;\n opportunityId?: string;\n}\n\nexport interface SalesActivityInterface extends SalesActivityBasicInfo {\n notes: string;\n previousSalesStatus: string;\n salesStatus: string;\n salesPersonName: string;\n salesPersonPhoto: string;\n closedLostReason: string;\n connected: boolean;\n audioKey?: string;\n}\n\nexport interface SalesActivityReaction {\n reactionUserName: string;\n reactionUserId: string;\n reactionType: ReactionType;\n}\n\nexport class SalesActivityComment {\n formattedCreatedDate: Observable;\n constructor(\n public commentUserName: string,\n public commentProfilePictureUrl: string,\n public commentText: string,\n public commentCreatedDateTime: string,\n ) {\n this.commentProfilePictureUrl = this.commentProfilePictureUrl || '/static/images/Profile.svg';\n const createdDate = this.commentCreatedDateTime;\n this.formattedCreatedDate = interval(1000).pipe(\n map(() => {\n return moment.utc(createdDate).local().fromNow();\n }),\n );\n }\n}\n\nexport class SalesActivity implements SalesActivityInterface {\n static STATUS_ENUM = {\n READY_TO_SELL: 'ready-to-sell',\n IN_PROGRESS: 'in-progress',\n CLOSED_WON: 'closed-won',\n CLOSED_LOST: 'closed-lost',\n FOLLOW_UP_NEEDED: 'follow-up-needed',\n };\n\n EDIT_TIME_LIMIT_IN_WEEKS = 1;\n ACTIONS: { [key: string]: string } = {\n 'replied-by-email': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.REPLIED_BY_EMAIL'),\n 'email-sent': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.SENT_EMAIL_TO'),\n 'email-received': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.RECEIVED_EMAIL'),\n 'inbound-call': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.HANDLED_INBOUND_CALL'),\n 'outbound-call': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.OUTBOUND_CALL'),\n 'presentation-booked': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.PRESENTATION_BOOKED'),\n 'presentation-done': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.PRESENTATION_DONE'),\n meeting: this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.MEETING'),\n 'opportunity-created': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.OPPORTUNITY_CREATED'),\n 'opportunity-closed-won': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.OPPORTUNITY_CLOSED_WON'),\n 'opportunity-closed-lost': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.OPPORTUNITY_CLOSED_LOST'),\n 'opportunity-updated': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.OPPORTUNITY_UPDATED'),\n 'archived-business': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.ARCHIVED_BUSINESS'),\n 'unarchived-business': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.UNARCHIVED_BUSINESS'),\n 'opportunity-reopened': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.OPPORTUNITY_REOPENED'),\n };\n\n ACTION_VERBS: { [key: string]: string } = {\n 'replied-by-email': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.REPLIED_BY_EMAIL'),\n 'email-sent': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.EMAIL_SENT'),\n 'email-received': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.EMAIL_RECEIVED'),\n 'inbound-call': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.INBOUND_CALL'),\n 'outbound-call': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.OUTBOUND_CALL'),\n 'presentation-booked': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.PRESENTATION_BOOKED'),\n 'presentation-done': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.PRESENTATION_DONE'),\n meeting: this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.MEETING'),\n 'opportunity-created': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.OPPORTUNITY_CREATED'),\n 'opportunity-closed-won': this.translate.instant(\n 'SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.OPPORTUNITY_CLOSED_WON',\n ),\n 'opportunity-closed-lost': this.translate.instant(\n 'SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.OPPORTUNITY_CLOSED_LOST',\n ),\n 'opportunity-updated': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.OPPORTUNITY_UPDATED'),\n 'archived-business': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.ARCHIVED_BUSINESS'),\n 'unarchived-business': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.UNARCHIVED_BUSINESS'),\n 'opportunity-reopened': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.OPPORTUNITY_REOPENED'),\n 'account-created': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.ACCOUNT_CREATED'),\n 'inbound-message': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.INBOUND_MESSAGE'),\n };\n\n STATUS: { [key: string]: string } = {\n 'ready-to-sell': this.translate.instant('SALES_ACTIVITY.STATUS.READY_TO_SELL'),\n 'in-progress': this.translate.instant('SALES_ACTIVITY.STATUS.IN_PROGRESS'),\n 'closed-won': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.OPPORTUNITY_CLOSED_WON'),\n 'closed-lost': this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTION_VERBS.OPPORTUNITY_CLOSED_LOST'),\n 'follow-up-needed': this.translate.instant('SALES_ACTIVITY.STATUS.FOLLOW_UP_NEEDED'),\n };\n\n NOT_DELETABLE_ACTIONS: Array = [\n 'opportunity-created',\n 'opportunity-closed-won',\n 'opportunity-closed-lost',\n 'archived-business',\n 'unarchived-business',\n 'opportunity-reopened',\n ];\n\n CLOSED_LOST_REASONS: { [key: string]: string } = {\n price: this.translate.instant('SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.PRICE'),\n 'no-budget': this.translate.instant('SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.NO_BUDGET'),\n 'lost-to-competitor': this.translate.instant('SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.LOST_TO_COMPETITOR'),\n 'not-ready': this.translate.instant('SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.NOT_READY'),\n other: this.translate.instant('SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.OTHER'),\n };\n\n public formattedStatus = '';\n public formattedClosedLostReason = '';\n public formattedPreviousStatus = '';\n public formattedAction = '';\n public formattedActionVerb: string;\n public createdDate: string;\n public lastEditDatetime: string;\n public formattedDate: Observable;\n public shouldShowAction = false;\n public likes: SalesActivityReaction[];\n public reactions: SalesActivityReaction[];\n public comments: SalesActivityComment[];\n public recentComments: (commentsLeft: number) => SalesActivityComment[];\n public restOfComments: (commentsLeft: number) => SalesActivityComment[];\n public isDeletable: boolean;\n public productPrice: number;\n\n public static buildSalesActivityFromRaw(rawItem: any, translate: TranslateService): SalesActivity {\n return new SalesActivity(\n rawItem.notes,\n rawItem.closed_lost_reason,\n rawItem.previous_sales_status,\n rawItem.sales_status,\n rawItem.sales_person_action,\n rawItem.custom_action_name,\n rawItem.salesperson_name,\n rawItem.salesperson_photo,\n rawItem.company_name,\n rawItem.event_datetime,\n rawItem.like_count,\n rawItem.reactions,\n rawItem.comments,\n rawItem.connected,\n rawItem.account_group_id,\n rawItem.sales_record_id,\n translate,\n rawItem.product_name,\n rawItem.product_price,\n rawItem.opportunity_id,\n rawItem.salesperson_id,\n rawItem.last_edit_datetime,\n rawItem.audio_key,\n );\n }\n\n public static shouldMarkConnected(action: string): boolean {\n return action === 'inbound-call' || action === 'meeting' || action === 'email-received';\n }\n\n constructor(\n public notes: string,\n public closedLostReason: string,\n public previousSalesStatus: string,\n public salesStatus: string,\n public salesPersonAction: SalesPersonAction,\n public customActionName: string,\n public salesPersonName: string,\n public salesPersonPhoto: string,\n public companyName: string,\n public date: string,\n public likeCount: number,\n reactions: {\n reaction_type: string;\n reaction_user_id: string;\n reaction_user_name: string;\n }[] = [],\n comments: {\n user_name: string;\n profile_picture_url: string;\n text: string;\n created: string;\n }[] = [],\n public connected: boolean,\n public accountGroupId: string,\n public salesActivityId: string,\n public translate: TranslateService,\n public productName?: string,\n productPrice?: number,\n public opportunityId?: string,\n public salespersonId?: string,\n public lastEdit?: string,\n public audioKey?: string,\n ) {\n this.productPrice = productPrice !== null ? productPrice : 0;\n this.createdDate = date;\n this.lastEditDatetime = lastEdit;\n this.reactions = reactions.map((r) => {\n return {\n reactionUserName: r.reaction_user_name,\n reactionUserId: r.reaction_user_id,\n reactionType: r.reaction_type,\n };\n });\n this.comments = comments.map((c) => {\n return new SalesActivityComment(c.user_name, c.profile_picture_url, c.text, c.created);\n });\n this.recentComments = function (commentsLeft: number): SalesActivityComment[] {\n return this.comments.slice(this.comments.length - (3 + commentsLeft));\n };\n this.restOfComments = function (commentsLeft: number): SalesActivityComment[] {\n return this.comments.slice(0, this.comments.length - (3 + commentsLeft));\n };\n this.setLikes();\n this.salesPersonPhoto = salesPersonPhoto || '/static/images/Profile.svg';\n\n this.formattedStatus = this.salesStatus ? this.STATUS[this.salesStatus] || 'Unknown' : '';\n this.formattedClosedLostReason = this.closedLostReason\n ? this.CLOSED_LOST_REASONS[this.closedLostReason] || 'Other'\n : '';\n this.formattedPreviousStatus = this.previousSalesStatus ? this.STATUS[this.previousSalesStatus] || 'Unknown' : '';\n const verb = this.salesPersonAction\n ? this.ACTIONS[this.salesPersonAction] || this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_ACTIONS.UNKNOWN')\n : null;\n this.formattedAction = verb ? verb : '';\n this.formattedActionVerb = this.salesPersonAction ? this.ACTION_VERBS[this.salesPersonAction] || 'Unknown' : '';\n this.isDeletable = !this.NOT_DELETABLE_ACTIONS.includes(this.salesPersonAction);\n this.shouldShowAction =\n !!this.salesPersonAction &&\n (this.salesStatus === 'follow-up-needed' ||\n this.salesStatus === 'in-progress' ||\n this.salesPersonAction === 'archived-business' ||\n this.salesPersonAction === 'unarchived-business' ||\n this.salesPersonAction === 'opportunity-reopened');\n //noinspection TypeScriptUnresolvedVariable\n this.formattedDate = interval(1000).pipe(\n map(() => {\n return moment.utc(date).local().fromNow();\n }),\n );\n this.connected = connected;\n }\n\n public addReaction(reaction: SalesActivityReaction): void {\n this.reactions.push(reaction);\n this.setLikes();\n }\n\n public addComment(userName: string, profilePictureUrl: string, commentText: string): void {\n this.comments.push(new SalesActivityComment(userName, profilePictureUrl, commentText, undefined));\n }\n\n public hasReactedTo(reactionType: ReactionType, salesPersonId: string): boolean {\n const userReaction = this.reactions.filter((reaction) => {\n return reaction.reactionUserId === salesPersonId && reaction.reactionType === reactionType;\n });\n return userReaction.length > 0;\n }\n\n public reactionText(\n reactionType: ReactionType,\n salesPersonId: string,\n translate: TranslateService,\n ): Observable {\n let reactions = this.getReactionsByType(reactionType);\n let salesPersonName;\n\n if (reactions.length === 0) {\n return translate.stream('SALES_ACTIVITY.REACTION_TEXT.BE_THE_FIRST');\n }\n if (this.hasReactedTo(reactionType, salesPersonId)) {\n // Get salesperson. If not found, then it's your reaction.\n if (reactions.length === 1) {\n salesPersonName = reactions[0].reactionUserName;\n } else {\n salesPersonName = 'You';\n }\n reactions = reactions.filter((reaction) => {\n return reaction.reactionUserId !== salesPersonId;\n });\n } else {\n salesPersonName = reactions[0].reactionUserName;\n const user_id = reactions[0].reactionUserId;\n reactions = this.reactions.filter((reaction) => {\n return reaction.reactionUserId !== user_id;\n });\n }\n let name;\n if (reactions.length > 0) {\n name = reactions[0].reactionUserName;\n }\n\n // These are reactions that do not include the impersonated salesperson. At this point if the reactions count\n // is 0 then it means the impersonated salesperson was the only one to react on this.\n if (reactions.length === 0) {\n return of(salesPersonName);\n } else if (reactions.length === 1) {\n return translate.stream('SALES_ACTIVITY.REACTION_TEXT.A_SALESPERSON_AND_ONE_OTHER', {\n person: salesPersonName,\n otherPerson: name,\n });\n } else if (reactions.length > 1) {\n return translate.stream('SALES_ACTIVITY.REACTION_TEXT.A_SALESPERSON_AND_MORE_THAN_ONE_OTHER', {\n person: salesPersonName,\n otherPerson: name,\n numberOfOtherPeople: reactions.length - 1,\n });\n }\n }\n\n public reactionTooltip(reactionType: ReactionType): string {\n const reactions = this.getReactionsByType(reactionType);\n const reactionCount = reactions.length;\n\n let tooltip = '';\n\n reactions.forEach((reaction, index) => {\n if (index !== 0 && index === reactionCount - 1) {\n tooltip += ' and ';\n } else if (index > 0) {\n tooltip += ', ';\n }\n\n tooltip += reaction.reactionUserName;\n });\n\n return tooltip;\n }\n\n private getReactionsByType(reactionType: ReactionType): SalesActivityReaction[] {\n return this.reactions.filter((reaction) => {\n return reaction.reactionType === reactionType;\n });\n }\n\n private setLikes(): void {\n this.likes = this.reactions.filter((r) => {\n return r.reactionType === ReactionType.LIKE;\n });\n }\n\n public isEditable(salespersonId: string, isImpersonation: boolean): boolean {\n if (!this.isDeletable || salespersonId !== this.salespersonId || isImpersonation) {\n return false;\n }\n const minMoment = moment(Date.now()).subtract(this.EDIT_TIME_LIMIT_IN_WEEKS, 'week');\n const currentMoment = moment(this.createdDate);\n return minMoment <= currentMoment;\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\nimport { catchError, map, switchMap, take } from 'rxjs/operators';\n\nimport { SALES_ACTIVITY_URLS } from './routes';\nimport { SalesActivity } from './sales-activity';\n\nimport moment from 'moment';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SalesToolHostService } from './salestool.host.service';\nimport {\n LoggedInUserInfoServiceInterface,\n LoggedInUserInfoServiceInterfaceToken,\n} from '../interfaces/logged-in-user-info.service.interface';\n\nexport const DEFAULT_API_PAGE_SIZE = 25; // This is the default page size returned in the nextUrl in the LookupSalesActivityResponse\n\nexport interface RawSalesActivity {\n reactions: [];\n auto_created: boolean;\n origin_id: string;\n custom_action_name: string;\n salesperson_photo: string;\n campaign_id: string;\n like_count: number;\n campaign_end_date: string;\n last_edit_datetime: string;\n campaign_name: string;\n partner_id: string;\n closed_lost_reason: string;\n event_datetime: string;\n event_time_diff: number;\n market_id: string;\n salesperson_name: string;\n comments: [];\n product_price: number;\n company_name: string;\n widget_flag: false;\n opportunity_id: string;\n product_name: string;\n sales_record_id: string;\n audio_key: string;\n campaign_start_date: string;\n salesperson_last_name: string;\n campaign_drop_id: string;\n connected: false;\n previous_sales_status: string;\n salesperson_first_name: string;\n deleted_date: string;\n closed_lost_reason_name: string;\n salesperson_id: string;\n sales_status: string;\n notes: string;\n sales_person_action: string;\n account_group_id: string;\n}\n\nexport interface Filters {\n salesperson?: string[];\n status?: string[];\n action?: string[];\n opportunityId?: string;\n accountGroupId?: string;\n fromDate?: string;\n toDate?: string;\n showActivities?: boolean;\n filteredSalespeople?: string[];\n}\n\nexport interface LookupSalesActivityResponse {\n salesActivities: SalesActivity[];\n total: number;\n nextUrl: string;\n}\n\nexport interface GetSalesActivityRequestBody {\n opportunityId?: string;\n accountGroupId?: string;\n partnerId: string;\n marketId?: string;\n currentSalespersonId?: string;\n salespersonId?: string[];\n accountStatus?: string[];\n actionTaken?: string[];\n fromDateWithTimezone?: string;\n toDateWithTimezone?: string;\n}\n\n@Injectable()\nexport class SalesActivityService {\n salesActivities$$: BehaviorSubject = new BehaviorSubject(null);\n readonly salesActivities$: Observable = this.salesActivities$$.asObservable();\n\n constructor(\n private readonly host: SalesToolHostService,\n private readonly _http: HttpClient,\n private readonly translate: TranslateService,\n @Inject(LoggedInUserInfoServiceInterfaceToken)\n private readonly loggedInUserInfoService: LoggedInUserInfoServiceInterface,\n ) {}\n\n loadSalesActivities(nextUrl: string, filters: Filters = {}): void {\n if (!filters.showActivities && Object.prototype.hasOwnProperty.call(filters, 'showActivities')) {\n const resp = {\n data: [],\n totalResults: 0,\n nextUrl: null,\n };\n this.processSalesActivitiesResponse(resp, null);\n } else {\n this._loadSalesActivitiesRequest(nextUrl, filters).subscribe((resp) =>\n this.processSalesActivitiesResponse(resp, nextUrl),\n );\n }\n }\n\n processSalesActivitiesResponse(resp: any, nextUrl: string): void {\n const activities = resp.data.map(this.deserializeActivity);\n const fullsalesActivityList = !nextUrl\n ? activities\n : this.salesActivities$$.getValue().salesActivities.concat(activities);\n this.salesActivities$$.next({\n salesActivities: fullsalesActivityList,\n total: resp.totalResults,\n nextUrl: resp.nextUrl,\n });\n }\n\n _loadSalesActivitiesRequest(nextUrl: string, filters: Filters = {}): Observable {\n const host = this.host.host();\n return this.loggedInUserInfoService.loggedInUserInfo$.pipe(\n switchMap((userInfo) => {\n let url = this.rebuildNexUrl(nextUrl);\n let body = {};\n if (!nextUrl) {\n url = `${host}${SALES_ACTIVITY_URLS.GET}`;\n body = JSON.stringify(\n this.buildGetActivityBody(userInfo.partnerId, userInfo.marketId, userInfo.salespersonId, filters),\n );\n }\n return this.doAjaxCall(url, body);\n }),\n catchError(() => {\n this.salesActivities$$.error('error');\n return throwError(this.translate.instant('SALES_ACTIVITY.SALES_ACTIVITY_NOT_LOADED'));\n }),\n map(this.extractData),\n take(1),\n );\n }\n\n rebuildNexUrl(nextUrl: string): string {\n if (!nextUrl) {\n return nextUrl;\n }\n const url = new URL(nextUrl);\n url.searchParams.forEach((value, name) => {\n if (value === 'None') {\n url.searchParams.delete(name);\n }\n });\n\n return url.toString();\n }\n\n likeActivity(\n accountGroupId: string,\n salesActivityId: string,\n ): Observable<{ data: { reactionUserName: string; reactionUserId: string; reactionType: string } }> {\n const host = this.host.host();\n const url = `${host}${SALES_ACTIVITY_URLS.REACT}`;\n return this.loggedInUserInfoService.loggedInUserInfo$.pipe(\n switchMap((userInfo) => {\n const body = {\n reactionType: 'like',\n accountGroupId: accountGroupId,\n salesActivityId: salesActivityId,\n userName: userInfo.userName,\n };\n if (userInfo.salespersonId) {\n body['salesPersonId'] = userInfo.salespersonId;\n }\n if (userInfo.salesManagerId) {\n body['salesManagerId'] = userInfo.salesManagerId;\n }\n return this.doAjaxCall(url, JSON.stringify(body));\n }),\n );\n }\n\n commentOnActivity(\n accountGroupId: string,\n salesActivityId: string,\n commentText: string,\n ): Observable<{ data: { commentUserName: string; commentProfilePictureUrl: string; commentText: string } }> {\n const host = this.host.host();\n const url = `${host}${SALES_ACTIVITY_URLS.COMMENT}`;\n return this.loggedInUserInfoService.loggedInUserInfo$.pipe(\n switchMap((userInfo) => {\n const body = {\n commentText: commentText,\n accountGroupId: accountGroupId,\n salesActivityId: salesActivityId,\n userName: userInfo.userName,\n };\n if (userInfo.salespersonId) {\n body['salesPersonId'] = userInfo.salespersonId;\n }\n if (userInfo.salesManagerId) {\n body['salesManagerId'] = userInfo.salesManagerId;\n }\n return this.doAjaxCall(url, JSON.stringify(body));\n }),\n );\n }\n\n public buildGetActivityBody(\n partnerId: string,\n marketId: string,\n currentSalespersonId: string,\n filters: Filters,\n ): GetSalesActivityRequestBody {\n const body: GetSalesActivityRequestBody = {\n partnerId: partnerId,\n marketId: marketId,\n accountGroupId: filters.accountGroupId,\n currentSalespersonId: currentSalespersonId,\n salespersonId: filters.salesperson,\n accountStatus: filters.status,\n actionTaken: filters.action,\n opportunityId: filters.opportunityId,\n };\n\n const fromDate: string = filters.fromDate,\n toDate: string = filters.toDate;\n\n body.salespersonId = filters.filteredSalespeople !== undefined ? filters.filteredSalespeople : filters.salesperson;\n\n if (fromDate && fromDate.length > 0) {\n const fromDateMoment = moment(parseInt(fromDate[0], 10));\n const fromDateStr = fromDateMoment.format('YYYY-MM-DDTHH:mm:ssZ');\n body.fromDateWithTimezone = fromDateStr;\n }\n\n if (toDate && toDate.length > 0) {\n // Add one day to toDate so the filter is inclusive\n const toDateMoment = moment(parseInt(toDate[0], 10)).add(1, 'days');\n const toDateStr = toDateMoment.format('YYYY-MM-DDTHH:mm:ssZ');\n body.toDateWithTimezone = toDateStr;\n }\n\n return body;\n }\n\n public extractData(res: any): any {\n if (res.status < 200 || res.status >= 300) {\n throw new Error(this.translate.instant('SALES_ACTIVITY.BAD_RESPONSE_STATUS') + res.status);\n }\n return res;\n }\n\n public deserializeActivity = (rawItem: any): SalesActivity => {\n // this needs to be a lexical closure to keep a reference to `this`\n // https://stackoverflow.com/questions/20627138/typescript-this-scoping-issue-when-called-in-jquery-callback/20627988#20627988\n // alternative is writing our own decorator https://github.com/JohnWeisz/BoundMethods/blob/master/src/bound.ts\n return SalesActivity.buildSalesActivityFromRaw(rawItem, this.translate);\n };\n\n private doAjaxCall(url: string, body: any): Observable {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n return this._http.post(url, body, { headers: headers, withCredentials: true }).pipe(map(this.extractData));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Environment, EnvironmentService } from '@galaxy/core';\n\nexport interface HostProvider {\n host(): string;\n}\n\n@Injectable()\nexport class SalesToolHostService implements HostProvider {\n private _host: string;\n\n constructor(private readonly environmentService: EnvironmentService) {}\n\n host(): string {\n if (this._host) {\n return this._host;\n }\n\n switch (this.environmentService.getEnvironment()) {\n case Environment.LOCAL:\n case Environment.TEST:\n case Environment.DEMO:\n this._host = 'https://salestool-demo.appspot.com';\n break;\n case Environment.PROD:\n this._host = 'https://salestool-prod.appspot.com';\n break;\n }\n return this._host;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Pipeline } from '../sales-opportunity/pipeline-stages/pipeline.model';\n\n@Pipe({\n name: 'getPipelineFromId',\n})\nexport class GetPipelineFromIdPipe implements PipeTransform {\n transform(pipelineId, pipelines: Pipeline[]): Pipeline | null {\n return findPipelineFromId(pipelines, pipelineId);\n }\n}\n\nfunction findPipelineFromId(pipelines: Pipeline[], pipelineId: string): Pipeline | null {\n return pipelines.find((p) => p.id === pipelineId) || null;\n}\n","import { NgModule } from '@angular/core';\nimport { GetPipelineFromIdPipe } from './pipeline-selector.pipe';\n\n@NgModule({\n declarations: [GetPipelineFromIdPipe],\n exports: [GetPipelineFromIdPipe],\n})\nexport class PipelineSelectorPipeModule {}\n","import { Injectable } from '@angular/core';\nimport { AccountGroupService, ProjectionFilter } from '@galaxy/account-group';\nimport { ObservableWorkStateMap } from '@vendasta/rx-utils/work-state';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\n\nexport interface AccountNameData {\n accountGroupId: string;\n name: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AccountNameGetterService {\n private searchedAccounts = new Map();\n\n private accounts = new ObservableWorkStateMap();\n\n private readonly loading$$ = new BehaviorSubject(false);\n readonly loading$ = this.loading$$.asObservable().pipe(shareReplay(1));\n\n constructor(private readonly accountGroupService: AccountGroupService) {}\n\n loadAccountIfNotLoaded(accountGroupId: string): void {\n if (this.searchedAccounts.has(accountGroupId) === false || this.searchedAccounts.get(accountGroupId) === false) {\n this.accounts.startWork(accountGroupId, this.get(accountGroupId));\n }\n }\n\n getAccount$(accountGroupId: string): Observable {\n return this.accounts.getWorkResults$(accountGroupId).pipe(shareReplay(1));\n }\n\n accountLoading$(accountGroupId: string): Observable {\n return this.accounts.isLoading$(accountGroupId);\n }\n\n isAccountDeleted$(accountGroupId: string): Observable {\n return this.accounts.getWorkResults$(accountGroupId).pipe(\n map((account) => {\n return !account.name;\n }),\n shareReplay(1),\n );\n }\n\n private get(accountGroupId: string): Observable {\n const projectionFilter = new ProjectionFilter({ napData: true });\n return this.accountGroupService.get(accountGroupId, projectionFilter).pipe(\n map((a) => {\n this.searchedAccounts.set(accountGroupId, true);\n return {\n accountGroupId: accountGroupId,\n name: a?.napData?.companyName || '',\n };\n }),\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AccountNameGetterService } from './account-name-getter.service';\nimport { Observable } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\n\n@Pipe({ name: 'getAccountName' })\nexport class GetAccountNamePipe implements PipeTransform {\n constructor(private readonly accountNameGetterService: AccountNameGetterService) {}\n\n transform(accountGroupId: string): Observable {\n this.accountNameGetterService.loadAccountIfNotLoaded(accountGroupId);\n return this.accountNameGetterService.getAccount$(accountGroupId).pipe(\n map((a) => a.name),\n shareReplay(1),\n );\n }\n}\n\n@Pipe({ name: 'isAccountDeleted' })\nexport class IsAccountDeletedPipe implements PipeTransform {\n constructor(private readonly accountNameGetterService: AccountNameGetterService) {}\n\n transform(accountGroupId: string): Observable {\n this.accountNameGetterService.loadAccountIfNotLoaded(accountGroupId);\n return this.accountNameGetterService.isAccountDeleted$(accountGroupId).pipe(shareReplay(1));\n }\n}\n\n@Pipe({ name: 'isAccountLoading' })\nexport class IsAccountLoadingPipe implements PipeTransform {\n constructor(private readonly accountNameGetterService: AccountNameGetterService) {}\n\n transform(accountGroupId: string): Observable {\n this.accountNameGetterService.loadAccountIfNotLoaded(accountGroupId);\n return this.accountNameGetterService.accountLoading$(accountGroupId).pipe(shareReplay(1));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GetAccountNamePipe, IsAccountDeletedPipe, IsAccountLoadingPipe } from './account-name-getter.pipe';\nimport { AccountNameGetterService } from './account-name-getter.service';\n\n@NgModule({\n declarations: [GetAccountNamePipe, IsAccountLoadingPipe, IsAccountDeletedPipe],\n imports: [CommonModule],\n providers: [AccountNameGetterService],\n exports: [GetAccountNamePipe, IsAccountLoadingPipe, IsAccountDeletedPipe],\n})\nexport class AccountNameGetterModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { formatDistanceToNowStrict } from 'date-fns';\nimport { getLocale } from '@vendasta/galaxy/utility/locale';\n\n@Pipe({\n name: 'daysAgo',\n})\nexport class DaysAgoPipe implements PipeTransform {\n transform(date: Date): string {\n if (!date) {\n return '';\n }\n return formatDistanceToNowStrict(date, { locale: getLocale(), addSuffix: true });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DaysAgoPipe } from './days-ago.pipe';\n\n@NgModule({\n declarations: [DaysAgoPipe],\n imports: [CommonModule],\n exports: [DaysAgoPipe],\n})\nexport class DaysAgoPipeModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { add, milliseconds } from 'date-fns';\n\ninterface ColoringCriteria {\n duration: Duration;\n color: string;\n}\ninterface ColoringStyle {\n color: string;\n}\n\nexport const RED = 'red';\nexport const ORANGE = 'orange';\nexport const GREEN = 'green';\n\n@Component({\n selector: 'sales-common-days-away',\n templateUrl: './days-away.component.html',\n})\nexport class DaysAwayComponent implements OnInit {\n @Input() date: Date;\n @Input() disableColor = false;\n\n currentStyle: ColoringStyle;\n\n private coloringCriteria: ColoringCriteria[] = [\n { duration: { days: 2 }, color: RED },\n { duration: { days: 7 }, color: ORANGE },\n ];\n private defaultColor = GREEN;\n\n private getColor(): string {\n if (this.disableColor) {\n return;\n }\n const criteria = this.coloringCriteria.sort((a, b) => milliseconds(a.duration) - milliseconds(b.duration));\n\n for (const i in criteria) {\n if (Object.prototype.hasOwnProperty.call(criteria, i)) {\n const isWithinRange = this.date < add(Date.now(), criteria[i].duration);\n if (isWithinRange) {\n return criteria[i].color;\n }\n }\n }\n return this.defaultColor;\n }\n\n ngOnInit(): void {\n const color = this.getColor();\n this.setStyle(color);\n }\n\n private setStyle(color: string): void {\n this.currentStyle = { color: color };\n }\n}\n","
{{ date | daysAgo }}
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DaysAwayComponent } from './days-away.component';\nimport { DaysAgoPipeModule } from '../days-ago';\n\n@NgModule({\n declarations: [DaysAwayComponent],\n imports: [CommonModule, DaysAgoPipeModule],\n exports: [DaysAwayComponent],\n})\nexport class DaysAwayModule {}\n"],"mappings":"s5EAEM,SAAUA,GAAcC,EAAwBC,EAAsB,CAC1E,OAAID,EAAOE,YAAcD,EAAOC,YACvB,EAELF,EAAOE,YAAcD,EAAOC,YACvB,GAEF,CACT,CCNO,IAAMC,GAAuB,iBACvBC,GAAmB,mBACnBC,GAA0B,IAE1BC,GAAP,KAAe,CAKnBC,YAAYC,EAA0BC,EAAYC,EAAY,CAC5D,KAAKF,OAASA,EACd,KAAKC,GAAKA,EACV,KAAKC,KAAOA,CACd,CAEAC,UAAUC,EAAmB,CAC3BA,EAAcA,GAA4B,EAC1C,IAAMC,EAAiC,KAAKL,OAAOM,KAAKC,EAAa,EAErE,OADmCF,EAAaG,KAAMC,GAAUL,GAAeK,EAAML,WAAW,GAC3EC,EAAaA,EAAaK,OAAS,CAAC,CAC3D,CAEAC,8BAA8BF,EAAqB,CACjD,GAAI,KAAKT,OAAOU,SAAW,EACzB,MAAM,IAAIE,MAAM,wBAAwB,EAE1C,IAAMP,EAAiC,KAAKL,OAAOM,KAAKC,EAAa,EAC/DM,EAAaR,EAAaG,KAAMM,GAAaA,EAASV,cAAgBK,EAAML,WAAW,EAE7F,GAAIS,EAAY,CACd,IAAME,EAAeV,EAAaW,QAAQH,CAAU,EAEpD,GAAIR,EAAaK,SAAW,EAC1B,MAAO,CAAEO,QAAS,EAAGC,QAAS,CAAC,EAGjC,GAAIH,IAAiB,EACnB,MAAO,CAAEE,QAAS,EAAGC,QAASL,EAAWT,WAAW,EAC/C,GAAIW,EAAe,GAAKA,EAAeV,EAAaK,OAAS,EAAG,CACrE,IAAMS,GAAoBd,EAAaU,EAAe,CAAC,EAAEX,YAAc,IAAMP,IAA2B,IAClGuB,EAAmBP,EAAWT,YACpC,MAAO,CAAEa,QAASE,EAAkBD,QAASE,CAAgB,CAC/D,SAAWL,IAAiBV,EAAaK,OAAS,EAGhD,MAAO,CAAEO,SADiBZ,EAAaU,EAAe,CAAC,EAAEX,YAAc,IAAMP,IAA2B,IACpEqB,QAASG,CAAkB,CAEnE,KAIE,OAAO,CAAEJ,SADNZ,EAAaA,EAAaK,OAAS,CAAC,EAAEN,YAAc,IAAMP,IAA2B,IACpDqB,QAAS,CAAC,CAElD,GCzCF,IAAaI,IAAiB,IAAA,CAAxB,IAAOA,EAAP,MAAOA,CAAiB,CAC5BC,UAAUC,EAAoBC,EAAmB,CAC/C,OAAOD,GAAUE,UAAUD,CAAW,CACxC,yCAHWH,EAAiB,6CAAjBA,EAAiBK,KAAA,EAAA,CAAA,EAAxB,IAAOL,EAAPM,SAAON,CAAiB,GAAA,ECT9B,IAAaO,IAA6B,IAAA,CAApC,IAAOA,EAAP,MAAOA,CAA6B,yCAA7BA,EAA6B,sBAA7BA,CAA6B,CAAA,oBAApC,IAAOA,EAAPC,SAAOD,CAA6B,GAAA,ECKnC,IAAME,GACX,IAAIC,GAAuC,wBAAwB,ECW9D,IAAMC,GACX,IAAIC,GAAiD,kCAAkC,ECTlF,IAAMC,GACX,IAAIC,GAA2C,4BAA4B,ECjB7E,IAAAC,GAAA,CACE,SAAY,CACV,KAAQ,CACN,mBAAsB,qBACtB,gBAAmB,UACnB,QAAW,sBACX,oBAAuB,wBACvB,OAAU,SACV,QAAW,CACT,aAAgB,CACd,OAAU,mBACV,WAAc,uBACd,YAAe,wBACf,mBAAsB,+BACtB,eAAkB,2BAClB,aAAgB,yBAChB,eAAkB,gBACpB,EACA,YAAe,cACf,mBAAsB,qBACtB,WAAc,aACd,MAAS,QACT,eAAkB,CAChB,KAAQ,iBACR,SAAY,WACZ,YAAe,cACf,iBAAoB,mBACpB,WAAc,aACd,YAAe,aACjB,EACA,aAAgB,CACd,KAAQ,eACR,QAAW,UACX,WAAc,aACd,eAAkB,iBAClB,gBAAmB,kBACnB,aAAgB,eAChB,cAAiB,gBACjB,QAAW,SACb,EACA,WAAc,CACZ,KAAQ,aACR,KAAQ,OACR,GAAM,IACR,CACF,EACA,OAAU,CACR,iBAAoB,kDACpB,uBAA0B,wDAC1B,2BAA8B,2DAC9B,0BAA6B,2DAC7B,oBAAuB,qDACvB,oBAAuB,yDACvB,kBAAqB,uDACrB,qBAAwB,0DACxB,uBAA0B,4DAC1B,sBAAyB,uDACzB,mBAAsB,CACpB,MAAS,sBACT,IAAO,wDACT,EACA,0BAA6B,wCAC7B,oBAAuB,0CACzB,EACA,KAAQ,OACR,MAAS,UACT,cAAiB,gBACjB,UAAa,YACb,UAAa,YACb,aAAgB,eAChB,MAAS,QACT,OAAU,SACV,OAAU,SACV,UAAa,YACb,MAAS,QACT,oBAAuB,gCACvB,cAAiB,CACf,OAAU,SACV,KAAQ,MACV,EACA,MAAS,iBACT,OAAU,SACV,aAAgB,eAChB,eAAkB,iBAClB,aAAgB,4BAClB,CACF,CACF,ECjFA,IAAaC,IAAiC,IAAA,CAAxC,IAAOA,EAAP,MAAOA,CAAiC,CAU5CC,aAAA,CACE,GAVe,KAAAC,aAAe,IAAIC,EAAwB,EAAE,EAC9C,KAAAC,YAAc,KAAKF,aAAaG,aAAY,EAE3C,KAAAC,+BAAiC,IAAIH,EAAyB,EAAI,EACnE,KAAAI,8BAAgC,KAAKD,+BAA+BD,aAAY,EAGzF,KAAAG,YAAc,GAGf,EAAE,4BAA6BC,QAAS,CAC1C,KAAKH,+BAA+BI,KAAK,EAAK,EAC9C,MACF,CAEA,KAAKC,YAAc,IAAIC,wBACvB,KAAKD,YAAYE,WAAa,GAC9B,KAAKF,YAAYG,eAAiB,GAElC,KAAKH,YAAYI,KAAO,QAExB,KAAKJ,YAAYK,SAAYC,GAAK,CAChC,IAAMC,EAAYC,MAAMC,KAAKH,EAAEI,OAAO,EACnCC,IAAKC,GAAWA,EAAO,CAAC,CAAC,EACzBD,IAAKC,GAAWA,EAAOC,UAAU,EACjCC,KAAK,EAAE,EAEV,KAAKvB,aAAaQ,KAAKQ,CAAS,CAClC,CACF,CAEAQ,wBAAsB,CAChB,KAAKlB,cAAgB,GACvB,KAAKmB,KAAI,EAET,KAAKC,MAAK,CAEd,CAEAD,MAAI,CACF,KAAKnB,YAAc,GACnB,KAAKG,aAAakB,MAAK,CACzB,CAEQD,OAAK,CACX,KAAKpB,YAAc,GACnB,KAAKG,aAAaiB,MAAK,CACzB,yCAhDW5B,EAAiC,wBAAjCA,EAAiC8B,QAAjC9B,EAAiC+B,SAAA,CAAA,EAAxC,IAAO/B,EAAPgC,SAAOhC,CAAiC,GAAA,ECC9C,IAAMiC,GAAM,MACNC,GAAU,UAOHC,IAAsB,IAAA,CAA7B,IAAOA,EAAP,MAAOA,CAAsB,CASjCC,YACmBC,EACAC,EACAC,EACAC,EACAC,EAAgC,CAJhC,KAAAJ,GAAAA,EACA,KAAAC,SAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,mBAAAA,EACA,KAAAC,gBAAAA,EARX,KAAAC,SAAW,KAAKJ,SAASK,WAAWV,EAAG,EAU7C,KAAKW,gBAAkB,KAAKJ,mBAAmBK,QAAQ,CAACC,GAAYC,MAAM,CAAC,EAAEC,KAAKC,EAAKC,GAAWA,EAAOC,OAAO,CAAC,CACnH,CAEAC,UAAQ,CACgBC,EAAc,CAAC,KAAKT,gBAAiB,KAAKL,aAAae,6BAA6B,CAAC,EAAEN,KAC3GC,EAAI,CAAC,CAACM,EAAgBC,CAAiB,IAAK,CAC1C,GAAI,CAACD,GAAkB,CAACC,EAAmB,CAEzC,IAAMC,EAAO,KAAKC,aAAaxB,EAAO,EACtC,KAAKyB,4BAA4BF,CAAI,CACvC,CACA,MAAO,CAACF,GAAkBC,CAC5B,CAAC,CAAC,EAGUI,UAAWC,GAAgB,CACvC,GAAIA,IAAiB,GAAM,CACzB,IAAMJ,EAAO,KAAKC,aAAazB,EAAG,EAClC,KAAK6B,kBAAkBL,CAAI,CAC7B,CACF,CAAC,EAED,KAAKlB,aAAawB,YAAYH,UAAWI,GAAQ,CAC/C,KAAKC,oBAAoBD,CAAI,CAC/B,CAAC,CACH,CAEAC,oBAAoBC,EAAe,CACjC,GAAIA,IAAY,GAIhB,IAAM,KAAKC,cAAgB,KAAKA,eAAiB,GAC/C,KAAKC,oBAAoBC,MAAQ,KAAKF,aAAe,IAAMD,MACtD,CACL,IAAMI,EAAoBJ,EAAQ,CAAC,EAAEK,YAAW,EAAKL,EAAQM,MAAM,CAAC,EACpE,KAAKJ,oBAAoBC,MAAQC,CACnC,CACA,KAAKF,oBAAoBK,cAAc,IAAIC,MAAM,OAAO,CAAC,EAC3D,CAEAC,aAAW,CACT,KAAKpC,aAAaqC,KAAI,EAClB,KAAKC,cACP,KAAKA,aAAY,EAGf,KAAKC,yBACP,KAAKA,wBAAuB,CAEhC,CAEAhB,kBAAkBL,EAAS,CACzB,KAAKoB,aAAe,KAAKvC,SAASyC,OAAOtB,EAAM,QAAS,IAAK,CACvD,KAAKlB,aAAayC,cAAgB,IACpC,KAAKb,aAAe,KAAKC,oBAAoBC,MAC7C,KAAK/B,SAAS2C,YAAYxB,EAAM,KAAKf,QAAQ,EAC7C,KAAKJ,SAAS4C,SAASzB,EAAM,kBAAkB,IAE/C,KAAKnB,SAAS6C,YAAY1B,EAAM,KAAKf,QAAQ,EAC7C,KAAKJ,SAAS8C,YAAY3B,EAAM,kBAAkB,EAClD,KAAKU,aAAe,KAAKC,oBAAoBC,OAE/C,KAAK9B,aAAa8C,uBAAsB,CAC1C,CAAC,CACH,CAEA3B,aAAa4B,EAAgB,CAC3B,IAAM7B,EAAO,KAAKnB,SAASiD,cAAc,UAAU,EACnD,OAAID,IAAarD,GACf,KAAKK,SAAS6C,YAAY1B,EAAM,KAAKf,QAAQ,EAE7C,KAAKJ,SAAS6C,YAAY1B,EAAM,KAAKnB,SAASK,WAAWT,EAAO,CAAC,EAEnE,KAAKI,SAAS4C,SAASzB,EAAM,UAAU,EACvC,KAAKnB,SAAS4C,SAASzB,EAAM,gBAAgB,EAC7C,KAAKnB,SAASkD,SAAS/B,EAAM,WAAY,UAAU,EACnD,KAAKnB,SAASkD,SAAS/B,EAAM,MAAO,KAAK,EACzC,KAAKnB,SAASkD,SAAS/B,EAAM,QAAS,KAAK,EAE3C,KAAKnB,SAASkD,SAAS/B,EAAM,SAAU,SAAS,EAEhD,KAAKnB,SAASkD,SAAS/B,EAAM,gBAAiB,MAAM,EAEpD,KAAKnB,SAASkD,SAAS/B,EAAM,QAAS,MAAM,EAC5C,KAAKnB,SAASkD,SAAS/B,EAAM,SAAU,MAAM,EAC7C,KAAKnB,SAASkD,SAAS/B,EAAM,YAAa,MAAM,EAEhD,KAAKnB,SAAS6C,YAAY,KAAK9C,GAAGoD,cAAcC,WAAWA,WAAYjC,CAAI,EACpEA,CACT,CAEAE,4BAA4BF,EAAS,CACnC,KAAKqB,wBAA0B,KAAKxC,SAASyC,OAAOtB,EAAM,QAAS,IAAK,CACxD,KAAKhB,gBAAgBkD,gBAAgB,kCAAmC,CACpFC,SAAU,IACVC,OAAQ,gCACT,EAEKC,SAAQ,EAAGlC,UAAU,IAAK,CAC9BmC,OAAOC,KAAK,iCAAkC,QAAQ,CACxD,CAAC,CACH,CAAC,CACH,yCAvHW7D,GAAsB8D,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,uBAAtBnE,EAAsBoE,UAAA,CAAA,CAAA,GAAA,gBAAA,EAAA,CAAA,EAAAC,OAAA,CAAApC,oBAAA,qBAAA,EAAAqC,SAAA,CAAAC,GAFtB,CAACN,EAAiC,CAAC,CAAA,CAAA,CAAA,EAE1C,IAAOjE,EAAPwE,SAAOxE,CAAsB,GAAA,ECNnC,IAAayE,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,yCAApBA,EAAoB,sBAApBA,CAAoB,CAAA,0BAFrBC,EAAY,CAAA,CAAA,EAElB,IAAOD,EAAPE,SAAOF,CAAoB,GAAA,ECEjC,IAAMG,GAAN,MAAMC,CAAsB,CAC1B,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAOA,IAAMC,GAAN,MAAMC,CAAe,CACnB,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EAOA,IAAMC,GAAN,MAAMC,CAAe,CACnB,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMC,GAAN,MAAMC,CAAO,CACX,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQH,GAAe,UAAUE,EAAM,KAAK,GAE5CA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIM,GAAa,SAAS,GAE/CL,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMG,GAAN,MAAMC,CAAa,CACjB,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMK,GAAN,MAAMC,CAAK,CACT,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMO,GAAN,MAAMC,CAAa,CACjB,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcO,GAAK,UAAUR,EAAM,WAAW,GAE9CA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIY,GAAS,SAAS,GAEnDX,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMS,GAAN,MAAMC,CAAS,CACb,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOO,GAAK,UAAUR,EAAM,IAAI,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMW,GAAN,MAAMC,CAAS,CACb,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkBD,EAAM,gBAAgB,IAAIF,GAAe,SAAS,GAEpEE,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAII,GAAO,SAAS,GAE5CJ,EAAM,eACRC,EAAE,aAAeS,GAAa,UAAUV,EAAM,YAAY,GAErDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EAOA,IAAMa,GAAN,MAAMC,CAAK,CACT,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EAOA,IAAMC,GAAN,MAAMC,CAAQ,CACZ,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOC,GAAK,UAAUF,EAAM,IAAI,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EAOA,IAAMC,GAAN,MAAMC,CAAmB,CACvB,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIE,GAAQ,SAAS,GAE/CF,EAAM,iBACRC,EAAE,eAAiBE,GAAsB,UAAUH,EAAM,cAAc,GAElEC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMC,GAAN,MAAMC,CAAK,CACT,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBO,EAAe,UAAUR,EAAM,cAAc,GAE9DA,EAAM,OACRC,EAAE,KAAOQ,GAAK,UAAUT,EAAM,IAAI,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIS,GAAK,SAAS,GAEtCT,EAAM,iBACRC,EAAE,eAAiBH,GAAmB,UAAUE,EAAM,cAAc,GAElEA,EAAM,OACRC,EAAE,KAAOS,GAAK,UAAUV,EAAM,IAAI,GAE7BC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMG,EAAN,MAAMG,CAAe,CACnB,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYG,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EAqCA,IAAIO,GAA4B,SAAUA,EAAc,CACtD,OAAAA,EAAaA,EAAa,mBAAwB,CAAC,EAAI,qBACvDA,EAAaA,EAAa,sBAA2B,CAAC,EAAI,wBACnDA,CACT,EAAEA,IAAgB,CAAC,CAAC,EAGpB,SAASC,GAAkBC,EAASC,EAAO,CACzC,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CACA,IAAMC,GAAN,MAAMC,CAAe,CACnB,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBC,EAAe,UAAUF,EAAM,cAAc,GAE3DC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMC,GAAN,MAAMC,CAAgB,CACpB,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUM,GAAQ,UAAUP,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMI,GAAN,MAAMC,CAA8C,CAClD,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkBD,EAAM,gBAAgB,IAAIU,GAAe,SAAS,GAEjET,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACMO,GAAN,MAAMC,CAA4B,CAChC,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBY,GAAe,UAAUb,EAAM,cAAc,GAE3DC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMU,GAAN,MAAMC,CAAsB,CAC1B,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWe,GAAS,UAAUhB,EAAM,QAAQ,GAEzCC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMa,GAAN,MAAMC,CAAuB,CAC3B,OAAO,UAAUlB,EAAO,CACtB,IAAIC,EAAI,IAAIiB,EACZ,OAAAjB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMe,GAAN,MAAMC,CAAgC,CACpC,OAAO,UAAUpB,EAAO,CACtB,IAAIC,EAAI,IAAImB,EACZ,OAAAnB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa,IAAI,KAAKD,EAAM,UAAU,GAEtCA,EAAM,WACRC,EAAE,SAAW,IAAI,KAAKD,EAAM,QAAQ,GAE/BC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMiB,GAAN,MAAMC,CAAsB,CAC1B,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMmB,GAAN,MAAMC,CAAsC,CAC1C,OAAO,UAAUxB,EAAO,CACtB,IAAIC,EAAI,IAAIuB,EACZ,OAAAvB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIyB,GAAO,SAAS,GAEzCxB,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMsB,GAAN,MAAMC,CAA4B,CAChC,OAAO,UAAU3B,EAAO,CACtB,IAAIC,EAAI,IAAI0B,EACZ,OAAA1B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMwB,GAAN,MAAMC,CAAmB,CACvB,OAAO,UAAU7B,EAAO,CACtB,IAAIC,EAAI,IAAI4B,EACZ,OAAA5B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACM2B,GAAN,MAAMC,CAAoB,CACxB,OAAO,UAAU/B,EAAO,CACtB,IAAIC,EAAI,IAAI8B,EACZ,OAAA9B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM4B,GAAN,MAAMC,CAAe,CACnB,OAAO,UAAUjC,EAAO,CACtB,IAAIC,EAAI,IAAIgC,EACZ,OAAAhC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBC,EAAe,UAAUF,EAAM,cAAc,GAE3DC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACM8B,GAAN,MAAMC,CAAgB,CACpB,OAAO,UAAUnC,EAAO,CACtB,IAAIC,EAAI,IAAIkC,EACZ,OAAAlC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOmC,GAAK,UAAUpC,EAAM,IAAI,GAE7BC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMiC,GAAN,MAAMC,CAAmB,CACvB,OAAO,UAAUtC,EAAO,CACtB,IAAIC,EAAI,IAAIqC,EACZ,OAAArC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMmC,GAAN,MAAMC,CAAoB,CACxB,OAAO,UAAUxC,EAAO,CACtB,IAAIC,EAAI,IAAIuC,EACZ,OAAAvC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWe,GAAS,UAAUhB,EAAM,QAAQ,GAEzCC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMqC,GAAN,MAAMC,CAAY,CAChB,OAAO,UAAU1C,EAAO,CACtB,IAAIC,EAAI,IAAIyC,EACZ,OAAAzC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBC,EAAe,UAAUF,EAAM,cAAc,GAE3DC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMuC,GAAN,MAAMC,CAAa,CACjB,OAAO,UAAU5C,EAAO,CACtB,IAAIC,EAAI,IAAI2C,EACZ,OAAA3C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO4C,GAAK,UAAU7C,EAAM,IAAI,GAE7BC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACM0C,GAAN,MAAMC,CAAoB,CACxB,OAAO,UAAU/C,EAAO,CACtB,IAAIC,EAAI,IAAI8C,EACZ,OAAA9C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBC,EAAe,UAAUF,EAAM,cAAc,GAE9DA,EAAM,gBACRC,EAAE,cAAgB+C,GAAoB,UAAUhD,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACM6C,GAAN,MAAMC,CAAqB,CACzB,OAAO,UAAUlD,EAAO,CACtB,IAAIC,EAAI,IAAIiD,EACZ,OAAAjD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIO,GAAQ,SAAS,GAE/CP,EAAM,iBACRC,EAAE,eAAiBkD,GAAsB,UAAUnD,EAAM,cAAc,GAElEC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMgD,GAAN,MAAMC,CAA2B,CAC/B,OAAO,UAAUrD,EAAO,CACtB,IAAIC,EAAI,IAAIoD,EACZ,OAAApD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB+C,GAAoB,UAAUhD,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMkD,GAAN,MAAMC,CAA4B,CAChC,OAAO,UAAUvD,EAAO,CACtB,IAAIC,EAAI,IAAIsD,EACZ,OAAAtD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkBD,EAAM,gBAAgB,IAAIa,GAAe,SAAS,GAEpEb,EAAM,iBACRC,EAAE,eAAiBkD,GAAsB,UAAUnD,EAAM,cAAc,GAElEC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMoD,GAAN,MAAMC,CAAqB,CACzB,OAAO,UAAUzD,EAAO,CACtB,IAAIC,EAAI,IAAIwD,EACZ,OAAAxD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUyB,GAA4B,UAAU1B,EAAM,OAAO,GAE7DA,EAAM,gBACRC,EAAE,cAAgB+C,GAAoB,UAAUhD,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMsD,GAAN,MAAMC,CAAsB,CAC1B,OAAO,UAAU3D,EAAO,CACtB,IAAIC,EAAI,IAAI0D,EACZ,OAAA1D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIgB,GAAS,SAAS,GAElDhB,EAAM,iBACRC,EAAE,eAAiBkD,GAAsB,UAAUnD,EAAM,cAAc,GAElEC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMwD,GAAN,MAAMC,CAAiB,CACrB,OAAO,UAAU7D,EAAO,CACtB,IAAIC,EAAI,IAAI4D,EACZ,OAAA5D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYkB,GAAgC,UAAUnB,EAAM,SAAS,GAErEA,EAAM,gBACRC,EAAE,cAAgB+C,GAAoB,UAAUhD,EAAM,aAAa,GAEjEA,EAAM,eACRC,EAAE,aAAeN,GAAkBD,GAAcM,EAAM,YAAY,GAE9DC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACM0D,GAAN,MAAMC,CAAkB,CACtB,OAAO,UAAU/D,EAAO,CACtB,IAAIC,EAAI,IAAI8D,EACZ,OAAA9D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIoC,GAAK,SAAS,GAEtCpC,EAAM,iBACRC,EAAE,eAAiBkD,GAAsB,UAAUnD,EAAM,cAAc,GAErEA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE3CC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACM4D,GAAN,MAAMC,CAA+B,CACnC,OAAO,UAAUjE,EAAO,CACtB,IAAIC,EAAI,IAAIgE,EACZ,OAAAhE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkBO,GAA8C,UAAUR,EAAM,eAAe,GAE/FA,EAAM,UACRC,EAAE,QAAUsB,GAAsC,UAAUvB,EAAM,OAAO,GAEvEA,EAAM,eACRC,EAAE,aAAeiE,GAAa,UAAUlE,EAAM,YAAY,GAErDC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM4C,GAAN,MAAMmB,CAAoB,CACxB,OAAO,UAAUnE,EAAO,CACtB,IAAIC,EAAI,IAAIkE,EACZ,OAAAlE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMgE,GAAN,MAAMC,CAAiB,CACrB,OAAO,UAAUrE,EAAO,CACtB,IAAIC,EAAI,IAAIoE,EACZ,OAAApE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBC,EAAe,UAAUF,EAAM,cAAc,GAE3DC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMkE,GAAN,MAAMC,CAAc,CAClB,OAAO,UAAUvE,EAAO,CACtB,IAAIC,EAAI,IAAIsE,EACZ,OAAAtE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBC,EAAe,UAAUF,EAAM,cAAc,GAE3DC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMoE,GAAN,MAAMC,CAAmB,CACvB,OAAO,UAAUzE,EAAO,CACtB,IAAIC,EAAI,IAAIwE,EACZ,OAAAxE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBC,EAAe,UAAUF,EAAM,cAAc,GAE3DC,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMsE,GAAN,MAAMC,CAAsB,CAC1B,OAAO,UAAU3E,EAAO,CACtB,IAAIC,EAAI,IAAI0E,EACZ,OAAA1E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAaD,EAAM,WAAW,IAAIgE,GAA+B,SAAS,GAEvE/D,CACT,CACA,YAAYE,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EAIMwE,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,kCACT,KAAQ,GACR,KAAQ,8BACR,KAAQ,8BACR,WAAc,6BAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6BC,EAAG,CACjD,OAAO,IAAKA,GAAKD,EACnB,EACAA,EAAY,WAA0BE,EAAmB,CACvD,MAAOF,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAMCG,IAAkC,IAAM,CAC1C,MAAMA,CAAkB,CACtB,YAAYC,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,GAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,QAAQC,EAAG,CACT,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrD,GAAeqD,CAAC,EACtD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8BAA+BC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQtD,GAAgB,UAAUsD,CAAI,CAAC,CAAC,CAC7J,CACA,UAAUH,EAAG,CACX,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzB,GAAiByB,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gCAAiCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ1B,GAAkB,UAAU0B,CAAI,CAAC,CAAC,CACjK,CACA,YAAYH,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhD,GAAmBgD,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQjD,GAAoB,UAAUiD,CAAI,CAAC,CAAC,CACrK,CACA,eAAeH,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvE,GAAsBuE,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQvE,GAAuB,UAAUuE,CAAI,CAAC,CAAC,CAC3K,CACA,eAAeH,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIX,GAAsBW,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACzF,KAAK,WAAW,GADyE,CAE5F,QAAS,UACX,EAAC,CACH,CACA,eAAeL,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhE,GAAsBgE,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACzF,KAAK,WAAW,GADyE,CAE5F,QAAS,UACX,EAAC,CACH,CACA,YAAYL,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzD,GAAmByD,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ1D,GAAoB,UAAU0D,CAAI,CAAC,CAAC,CACrK,CACA,cAAcH,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7B,GAAqB6B,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oCAAqCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ9B,GAAsB,UAAU8B,CAAI,CAAC,CAAC,CACzK,CACA,qBAAqBH,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1E,GAA4B0E,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GAC/F,KAAK,WAAW,GAD+E,CAElG,QAAS,UACX,EAAC,CACH,CACA,oBAAoBL,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjC,GAA2BiC,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQlC,GAA4B,UAAUkC,CAAI,CAAC,CAAC,CACrL,CACA,QAAQH,EAAG,CACT,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvF,GAAeuF,CAAC,EACtD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8BAA+BC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQnF,GAAgB,UAAUmF,CAAI,CAAC,CAAC,CAC7J,CACA,aAAaH,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvC,GAAoBuC,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQvC,GAAqB,UAAUuC,CAAI,CAAC,CAAC,CACvK,CACA,KAAKH,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5C,GAAY4C,CAAC,EACnD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2BAA4BC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ7C,GAAa,UAAU6C,CAAI,CAAC,CAAC,CACvJ,CACA,OAAOH,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIf,GAAce,CAAC,EACrD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6BAA8BC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACjF,KAAK,WAAW,GADiE,CAEpF,QAAS,UACX,EAAC,CACH,CACA,UAAUL,EAAG,CACX,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjB,GAAiBiB,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gCAAiCC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACpF,KAAK,WAAW,GADoE,CAEvF,QAAS,UACX,EAAC,CACH,CACA,YAAYL,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIb,GAAmBa,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAGG,GAAAC,GAAA,GACtF,KAAK,WAAW,GADsE,CAEzF,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAT,EAAkB,UAAO,SAAmCF,EAAG,CAC7D,OAAO,IAAKA,GAAKE,GAAsBU,EAAYC,EAAU,EAAMD,EAASb,EAAW,CAAC,CAC1F,EACAG,EAAkB,WAA0BD,EAAmB,CAC7D,MAAOC,EACP,QAASA,EAAkB,UAC3B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAIH,SAASY,GAAmBC,EAAG,CAC7B,OAAAA,EAAE,MAAUA,EAAE,MAAQA,EAAE,MAAQ,CAAC,EACjCA,EAAE,eAAmBA,EAAE,eAAiBA,EAAE,eAAiB,IAAIC,GAAmB,CAAC,CAAC,EACpFD,EAAE,eAAe,SAAaA,EAAE,eAAe,SAAWA,EAAE,eAAe,SAAW,CAAC,EACvFA,EAAE,eAAe,eAAmBA,EAAE,eAAe,eAAiBA,EAAE,eAAe,eAAiB,IAAI3C,GAAsB,CAAC,CAAC,EAC7H2C,CACT,CACA,IAAME,GAAN,KAAoB,CAClB,YAAYC,EAASC,EAAYC,EAAS,CACxC,KAAK,QAAUF,EACf,KAAK,WAAaC,EAClB,KAAK,QAAUC,CACjB,CACF,EACIC,IAA+B,IAAM,CACvC,MAAMA,CAAe,CACnB,YAAYC,EAAK,CACf,KAAK,IAAMA,CACb,CACA,QAAQC,EAAQC,EAAQ,CACtB,OAAO,KAAK,IAAI,QAAQ,CACtB,eAAgB,CACd,OAAQA,EACR,OAAQD,CACV,CACF,CAAC,EAAE,KAAKf,EAAIC,GAAQK,GAAmBL,EAAK,IAAI,CAAC,CAAC,CACpD,CACA,YAAYc,EAAQ,CAClB,OAAO,KAAK,IAAI,YAAY,CAC1B,OAAQA,CACV,CAAC,EAAE,KAAKf,EAAIC,GAAQA,EAAK,QAAQ,CAAC,CACpC,CACA,eAAegB,EAAU,CACvB,OAAO,KAAK,IAAI,eAAe,CAC7B,SAAUA,CACZ,CAAC,EAAE,KAAKjB,EAAIC,GAAQA,EAAK,MAAM,CAAC,CAClC,CACA,eAAec,EAAQG,EAAY,CACjC,OAAO,KAAK,IAAI,eAAe,CAC7B,OAAQH,EACR,WAAYG,CACd,CAAC,EAAE,KAAKlB,EAAI,IAAM,EAAI,CAAC,CACzB,CACA,eAAee,EAAQ,CACrB,OAAO,KAAK,IAAI,eAAe,CAC7B,OAAQA,CACV,CAAC,EAAE,KAAKf,EAAI,IAAM,EAAI,CAAC,CACzB,CACA,qBAAqBmB,EAAIC,EAAM,CAC7B,OAAO,KAAK,IAAI,qBAAqB,CACnC,eAAgB,CACd,GAAID,EACJ,KAAMC,CACR,CACF,CAAC,EAAE,KAAKpB,EAAI,IAAM,EAAI,CAAC,CACzB,CACA,oBAAoBqB,EAAe,CACjC,OAAO,KAAK,IAAI,oBAAoB,CAClC,cAAeA,CACjB,CAAC,EAAE,KAAKrB,EAAIC,GAAQ,IAAIQ,GAAcR,EAAK,gBAAiBA,EAAK,eAAe,WAAYA,EAAK,eAAe,OAAO,CAAC,CAAC,CAC3H,CACA,QAAQc,EAAQC,EAAQM,EAAM,CAC5B,OAAO,KAAK,IAAI,QAAQ,CACtB,eAAgB,CACd,OAAQP,EACR,OAAQC,CACV,EACA,KAAMM,CACR,CAAC,EAAE,KAAKtB,EAAIC,GAAQA,EAAK,OAAO,CAAC,CACnC,CACA,KAAKc,EAAQC,EAAQ,CACnB,OAAO,KAAK,IAAI,KAAK,CACnB,eAAgB,CACd,OAAQD,EACR,OAAQC,CACV,CACF,CAAC,EAAE,KAAKhB,EAAIC,GAAQA,EAAK,IAAI,CAAC,CAChC,CACA,OAAOc,EAAQC,EAAQ,CACrB,OAAO,KAAK,IAAI,OAAO,CACrB,eAAgB,CACd,OAAQD,EACR,OAAQC,CACV,CACF,CAAC,EAAE,KAAKhB,EAAI,IAAM,EAAI,CAAC,CACzB,CACA,UAAUuB,EAAS,CACjB,OAAO,KAAK,IAAI,UAAUA,CAAO,EAAE,KAAKvB,EAAIC,IACpCA,GAAQA,EAAK,QACjBA,EAAK,MAAQA,EAAK,MAAM,IAAIM,GAAKD,GAAmBC,CAAC,CAAC,GAEjDN,EACR,CAAC,CACJ,CACA,aAAac,EAAQC,EAAQQ,EAAQC,EAAU,CAC7C,OAAO,KAAK,IAAI,aAAa,CAC3B,eAAgB,CACd,OAAQV,EACR,OAAQC,CACV,EACA,cAAe,CACb,OAAQQ,EACR,SAAUC,CACZ,CACF,CAAC,EAAE,KAAKzB,EAAIC,GAAQA,CAAI,CAAC,CAC3B,CACA,UAAUc,EAAQC,EAAQ,CACxB,OAAO,KAAK,IAAI,UAAU,CACxB,eAAgB,CACd,OAAQD,EACR,OAAQC,CACV,CACF,CAAC,EAAE,KAAKhB,EAAI,IAAM,EAAI,CAAC,CACzB,CACA,YAAYe,EAAQC,EAAQ,CAC1B,OAAO,KAAK,IAAI,YAAY,CAC1B,eAAgB,CACd,OAAQD,EACR,OAAQC,CACV,CACF,CAAC,EAAE,KAAKhB,EAAI,IAAM,EAAI,CAAC,CACzB,CACA,aAAc,CACZ,OAAO,KAAK,IAAI,YAAY,CAAC,CAAC,EAAE,KAAKA,EAAIC,GAAQA,EAAK,QAAQ,CAAC,CACjE,CACA,cAAcyB,EAASF,EAAQC,EAAU,CACvC,OAAO,KAAK,IAAI,cAAc,CAC5B,QAASC,EACT,cAAe,CACb,OAAQF,EACR,SAAUC,CACZ,CACF,CAAC,EAAE,KAAKzB,EAAIC,GACH,IAAIQ,GAAcR,EAAK,UAAWA,EAAK,eAAe,WAAYA,EAAK,eAAe,OAAO,CACrG,CAAC,CACJ,CACF,CACA,OAAAY,EAAe,UAAO,SAAgCrB,EAAG,CACvD,OAAO,IAAKA,GAAKqB,GAAmBT,EAASV,EAAiB,CAAC,CACjE,EACAmB,EAAe,WAA0BpB,EAAmB,CAC1D,MAAOoB,EACP,QAASA,EAAe,UACxB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EC1pDH,IAAAc,GAAmB,SAYnB,IAAaC,IAAgB,IAAA,CAAvB,IAAOA,EAAP,MAAOA,CAAgB,CAO3BC,YACmBC,EACAC,EAAsC,CADtC,KAAAD,iBAAAA,EACA,KAAAC,mBAAAA,EARV,KAAAC,QAA4B,CAAA,EAC5B,KAAAC,SAAW,IAQjB,CAEHC,UAAQ,CACN,KAAKC,kBAAiB,EACtB,KAAKC,cAAgB,KAAKL,mBACvBM,QAAQ,CAAC,oBAAoB,CAAC,EAC9BC,KAAKC,EAAKC,GAAYA,EAAOC,QAAU,KAAO,IAAK,CAAC,CACzD,CAEAN,mBAAiB,CACf,IAAMO,EAAkB,CAAA,EACpB,KAAKV,QAAQW,OACX,KAAKX,QAAQW,KAAKC,WACpBF,EAAMG,KAAK,KAAKb,QAAQW,KAAKC,SAAS,EAEpC,KAAKZ,QAAQW,KAAKG,UACpBJ,EAAMG,KAAK,KAAKb,QAAQW,KAAKG,QAAQ,GAGrCJ,EAAMK,SAAW,GACnBL,EAAMG,KAAK,KAAKf,iBAAiBkB,QAAQ,4BAA4B,CAAC,EAExE,KAAKC,SAAWP,EAAMQ,KAAK,GAAG,CAChC,CAEAC,QAAQC,EAAU,CAChB,SAAOC,GAAAA,SAAOD,CAAI,EAAED,QAAO,CAC7B,yCArCWvB,GAAgB0B,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,sBAAhB5B,EAAgB6B,UAAA,CAAA,CAAA,8BAAA,CAAA,EAAAC,OAAA,CAAA1B,QAAA,UAAAC,SAAA,UAAA,EAAA0B,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,WAAA,WAAA,YAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,0BAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICd7BE,EAAA,EAAA,MAAA,CAAA,EAAiC,EAAA,MAAA,CAAA,EAG7BC,EAAA,EAAA,UAAA,CAAA,EACFC,EAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EAAsC,EAAA,OAAA,CAAA,EACJG,EAAA,CAAA,EAAcD,EAAA,EAC9CC,EAAA,CAAA,EACAH,EAAA,EAAA,MAAA,CAAA,EAAsC,EAAA,MAAA,EAC9BG,EAAA,CAAA,eAAoFD,EAAA,EAAO,EAC7F,EACF,SARKE,EAAA,CAAA,EAAAC,EAAA,WAAAN,EAAAf,QAAA,EAAqB,WAAAe,EAAA/B,QAAA,EAAsB,aAAA+B,EAAAf,QAAA,EAGpBoB,EAAA,CAAA,EAAAE,EAAAP,EAAAf,QAAA,EAChCoB,EAAA,EAAAG,EAAA,IAAAR,EAAAhC,QAAAyC,KAAA,GAAA,EAEQJ,EAAA,CAAA,EAAAK,GAAA,GAAAC,GAAA,GAAA,EAAAX,EAAAhC,QAAA4C,QAAA,oBAAA,EAAA,KAAAZ,EAAAb,QAAAa,EAAAhC,QAAA4C,OAAA,EAAA,GAAA;+GDKN,IAAOhD,EAAPiD,SAAOjD,CAAgB,GAAA,yBGZzBkD,EAAA,CAAA,EACEC,EAAA,EAAA,MAAA,EAAA,EACEC,EAAA,EAAA,cAAA,EAAA,EACFC,EAAA,aADeC,EAAA,CAAA,EAAAC,EAAA,WAAA,EAAA,sCAGjBL,EAAA,CAAA,EACEC,EAAA,EAAA,IAAA,EAAA,EAA0BK,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,iBAAA,CAAkB,CAAA,CAAA,EACnDC,EAAA,CAAA,mBACFV,EAAA,YADEC,EAAA,CAAA,EAAAU,EAAA,IAAAC,EAAA,EAAA,EAAA,kCAAA,EAAA,GAAA,6BARNd,EAAA,EAAA,MAAA,EAAA,EACEe,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAA0C,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAU5Cf,EAAA,kBAViBC,EAAA,EAAAC,EAAA,OAAAI,EAAAU,mBAAA,EAKAf,EAAA,EAAAC,EAAA,OAAA,CAAAI,EAAAU,mBAAA,6BAQbnB,EAAA,CAAA,EACEE,EAAA,EAAA,+BAAA,EAAA,oCAA8BE,EAAA,EAAAC,EAAA,UAAAe,CAAA,EAAmB,WAAAX,EAAAY,QAAA,GDIzD,IAAaC,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAkB/BC,YACmBC,EACTC,EACSC,EAA6B,CAF7B,KAAAF,YAAAA,EACT,KAAAC,IAAAA,EACS,KAAAC,aAAAA,EAnBV,KAAAC,OAAS,GACT,KAAAC,OAAS,GAET,KAAAP,SAAW,KAGV,KAAAQ,eAAiB,IAAIC,GAE/B,KAAAC,gBAAkB,GAClB,KAAAC,eAAiB,GACjB,KAAAC,WAAa,GACb,KAAAd,oBAAsB,GACtB,KAAAe,SAA+B,CAAA,EAC/B,KAAAC,QAAU,GACV,KAAAC,WAAa,EAMV,CAEHC,UAAQ,CACN,KAAKN,gBAAkB,CAAC,KAAKO,YAAYC,UAAW,KAAKD,YAAYE,QAAQ,EAAEC,KAAK,GAAG,EACvF,KAAKP,UAAY,KAAKQ,iBAAiBR,UAAY,CAAA,GAAIS,QAAO,EAC9D,KAAKR,QAAU,KAAKO,iBAAiBE,gBAAgBT,QACrD,KAAKC,WAAa,KAAKM,iBAAiBE,gBAAgBR,UAC1D,CAEAS,YAAYC,EAAU,CAChB,CAACA,EAAMC,UAAYD,EAAME,UAAY,IACvC,KAAKC,QAAO,CAEhB,CAEAA,SAAO,CACL,KAAKhB,WAAa,GAClB,KAAKT,YACFyB,QAAQ,KAAKrB,OAAQ,KAAKD,OAAQ,KAAKK,cAAc,EACrDkB,KACCC,EAAK,CAAC,EACNC,EAAS,IAAK,CACZ,KAAKnB,WAAa,GAClB,KAAKR,IAAI4B,cAAa,CACxB,CAAC,CAAC,EAEHC,UACEC,GAAQ,CACP,KAAKrB,SAASsB,KAAKD,CAAI,EACvB,KAAKvB,eAAiB,GACtB,KAAKH,eAAe4B,KAClB,IAAIC,EAAe,CACjB9B,OAAQ,KAAKA,OACbD,OAAQ,KAAKA,OACd,CAAC,EAEJ,KAAKF,IAAI4B,cAAa,CACxB,EACCM,GAAS,CACRC,QAAQD,MAAMA,CAAK,EACnB,KAAKjC,aAAamC,eAAe,uCAAuC,CAC1E,CAAC,CAEP,CAEAjD,kBAAgB,CACd,KAAKO,oBAAsB,GAC3B,KAAKK,YACFsC,aAAa,KAAKlC,OAAQ,KAAKD,OAAQ,KAAKS,WAAY,EAAE,EAC1Dc,KACCC,EAAK,CAAC,EACNC,EAAS,IAAK,CACZ,KAAKjC,oBAAsB,GAC3B,KAAKM,IAAI4B,cAAa,CACxB,CAAC,CAAC,EAEHC,UACEC,GAAQ,CACP,IAAMrB,GAAgCqB,EAAKrB,UAAY,CAAA,GAAIS,QAAO,EAClE,KAAKT,SAAWA,EAAS6B,OAAO,KAAK7B,QAAQ,EAC7C,KAAKC,QAAUoB,EAAKX,eAAeT,QACnC,KAAKC,WAAamB,EAAKX,eAAeR,WACtC,KAAKX,IAAI4B,cAAa,CACxB,EACCM,GAAS,CACRC,QAAQD,MAAMA,CAAK,EACnB,KAAKjC,aAAamC,eAAe,6CAA6C,CAChF,CAAC,CAEP,yCA3FWvC,GAAoB0C,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,sBAApB7C,EAAoB8C,UAAA,CAAA,CAAA,mCAAA,CAAA,EAAAC,OAAA,CAAA3B,gBAAA,kBAAAf,OAAA,SAAAC,OAAA,SAAAU,YAAA,cAAAjB,SAAA,UAAA,EAAAiD,QAAA,CAAAzC,eAAA,gBAAA,EAAA0C,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,WAAA,EAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,QAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,WAAA,WAAA,YAAA,EAAA,CAAA,aAAA,UAAA,EAAA,aAAA,EAAA,CAAA,WAAA,GAAA,sBAAA,GAAA,YAAA,OAAA,gBAAA,GAAA,EAAA,WAAA,gBAAA,WAAA,UAAA,qBAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCpBjC1E,EAAA,EAAA,MAAA,CAAA,EACEe,EAAA,EAAA6D,GAAA,EAAA,EAAA,MAAA,CAAA,EAYA5E,EAAA,EAAA,MAAA,CAAA,EAAuC,EAAA,KAAA,EAEnCe,EAAA,EAAA8D,GAAA,EAAA,EAAA,eAAA,CAAA,EAGF3E,EAAA,EAAM,EACF,EAERF,EAAA,EAAA,MAAA,CAAA,EAAuC,EAAA,MAAA,CAAA,EAGnCC,EAAA,EAAA,UAAA,CAAA,EACFC,EAAA,EACAF,EAAA,EAAA,iBAAA,CAAA,EAAyD,EAAA,WAAA,EAC5CY,EAAA,EAAA,oBAA+CV,EAAA,EAC1DF,EAAA,GAAA,WAAA,EAAA,CAAA,EAEEK,EAAA,WAAA,SAAAyE,EAAA,CAAAC,OAAAzE,EAAA0E,CAAA,EAAAtE,EAAYiE,EAAA/B,YAAAkC,CAAA,CAAmB,CAAA,CAAA,EAG/BG,GAAA,gBAAA,SAAAH,EAAA,CAAAC,OAAAzE,EAAA0E,CAAA,EAAAE,GAAAP,EAAA5C,eAAA+C,CAAA,IAAAH,EAAA5C,eAAA+C,GAAApE,EAAAoE,CAAA,CAAA,CAAA,EAKD5E,EAAA,EACDF,EAAA,GAAA,UAAA,EAAUY,EAAA,EAAA,oBAAqDV,EAAA,EAAW,EAC3D,sBAvCyBC,EAAA,EAAAC,EAAA,OAAAuE,EAAAzC,OAAA,EAcJ/B,EAAA,CAAA,EAAAC,EAAA,UAAAuE,EAAA1C,QAAA,EAS3B9B,EAAA,CAAA,EAAAC,EAAA,WAAAuE,EAAA7C,eAAA,EAA4B,WAAA6C,EAAAvD,QAAA,EAAsB,aAAAuD,EAAA7C,eAAA,EAGhD3B,EAAA,CAAA,EAAAgF,EAAArE,EAAA,GAAA,GAAA,6BAAA,CAAA,EAKTX,EAAA,CAAA,EAAAC,EAAA,WAAAuE,EAAA3C,UAAA,EACAoD,GAAA,UAAAT,EAAA5C,cAAA,EAIA3B,EAAA,sBAAAiF,CAAA,EAEQlF,EAAA,CAAA,EAAAgF,EAAArE,EAAA,GAAA,GAAA,mCAAA,CAAA;sIDnBR,IAAOO,EAAPiE,SAAOjE,CAAoB,GAAA,EEFjC,IAAakE,IAA6B,IAAA,CAApC,IAAOA,EAAP,MAAOA,CAA6B,CAIxCC,YACSC,EACyBC,EAA2B,CADpD,KAAAD,UAAAA,EACyB,KAAAC,KAAAA,EALlC,KAAAC,YAAc,IAAIC,EAMf,CAEHC,UAAQ,CACN,KAAKF,YAAYG,SAAS,KAAKJ,KAAKK,QAAQ,EAE5C,KAAKC,SAAW,KAAKN,KAAKO,OAC5B,CAEAC,MAAMC,EAAgB,CACpB,GAAI,CAACA,EAAS,CACZ,KAAKV,UAAUS,MAAK,EACpB,MACF,CACA,KAAKT,UAAUS,MAAM,KAAKP,YAAYS,OAAS,CAAA,CAAE,CACnD,yCArBWb,GAA6Bc,EAAAC,EAAA,EAAAD,EAM9BE,EAAe,CAAA,CAAA,sBANdhB,EAA6BiB,UAAA,CAAA,CAAA,qCAAA,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,cAAA,cAAA,kBAAA,SAAA,EAAA,CAAA,QAAA,KAAA,EAAA,CAAA,aAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IClB1CE,EAAA,EAAA,oBAAA,EAAoB,EAAA,KAAA,CAAA,EACGC,EAAA,CAAA,mBAA4BC,EAAA,EACjDC,EAAA,EAAA,sBAAA,CAAA,gCAMFD,EAAA,EACAF,EAAA,EAAA,qBAAA,CAAA,EAAgC,EAAA,SAAA,CAAA,EACKI,EAAA,QAAA,UAAA,CAAA,OAASL,EAAAZ,MAAM,EAAK,CAAC,CAAA,EACtDc,EAAA,CAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,CAAA,EAA0CI,EAAA,QAAA,UAAA,CAAA,OAASL,EAAAZ,MAAM,EAAI,CAAC,CAAA,EAC5Dc,EAAA,EAAA,oBACFC,EAAA,EAAS,SAdYG,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAAR,EAAApB,KAAA6B,KAAA,CAAA,EAEnBH,EAAA,CAAA,EAAAI,EAAA,cAAAV,EAAAnB,WAAA,EAA2B,cAAA2B,EAAA,EAAA,EAAAR,EAAApB,KAAA+B,WAAA,CAAA,EACiB,kBAAA,EAAA,EACnB,UAAAH,EAAA,EAAA,GAAAR,EAAAd,QAAA,CAAA,EAMzBoB,EAAA,CAAA,EAAAM,EAAA,IAAAJ,EAAA,GAAA,GAAA,oCAAA,EAAA,GAAA,EAGAF,EAAA,CAAA,EAAAM,EAAA,IAAAJ,EAAA,GAAA,GAAA,kCAAA,EAAA,GAAA;8HDIE,IAAO/B,EAAPoC,SAAOpC,CAA6B,GAAA,4BGHpCqC,EAAA,EAAA,aAAA,CAAA,EAIEC,EAAA,CAAA,EACFC,EAAA,0BAHEC,EAAA,QAAAC,EAAAC,IAAA,EAEAC,EAAA,EAAAC,EAAA,IAAAH,EAAAC,KAAA,GAAA,GDCR,IAAaG,IAA8B,IAAA,CAArC,IAAOA,EAAP,MAAOA,CAA8B,CAOzCC,YACSC,EACyBC,EAAgB,CADzC,KAAAD,UAAAA,EACyB,KAAAC,KAAAA,EARlC,KAAAC,YAAc,IAAIC,GAUhB,KAAKD,YAAYE,SAAS,KAAKH,KAAKI,UAAUV,IAAI,EAElD,KAAKW,SAAW,KAAKL,KAAKM,OAC5B,CAEAC,UAAQ,CACN,KAAKC,iBAAmBC,EAAc,CAAC,KAAKR,YAAYS,aAAaC,KAAKC,GAAU,EAAE,CAAC,EAAG,KAAKP,QAAQ,CAAC,EAAEM,KACxGE,EAAI,CAAC,CAACC,EAAOR,CAAO,IAAM,KAAKS,QAAQD,EAAOR,CAAO,CAAC,CAAC,CAE3D,CAEQS,QAAQD,EAAeR,EAAuB,CACpD,IAAMU,EAAcF,EAAMG,YAAW,EAErC,OAAOX,EAAQY,OAAQC,GAAWA,EAAOzB,KAAKuB,YAAW,EAAGG,SAASJ,CAAW,CAAC,CACnF,CAEAK,MAAMC,EAAgB,CACpB,GAAI,CAACA,EAAS,CACZ,KAAKvB,UAAUsB,MAAK,EACpB,MACF,CACA,KAAKtB,UAAUsB,MAAM,KAAKE,cAAc,CAC1C,CAEAC,UAAUC,EAAmC,CAE3C,KAAKpB,SACFM,KACCe,EAAK,CAAC,EACNb,EAAKP,GAAW,CACd,QAAWa,KAAUb,EACnB,GAAIa,EAAOzB,OAAS+B,EAAMN,OAAOL,MAC/B,OAAOK,CAGb,CAAC,CAAC,EAEHQ,UAAWR,GAAU,CACpB,KAAKI,eAAiBJ,CACxB,CAAC,CACL,yCApDWtB,GAA8B+B,EAAAC,EAAA,EAAAD,EAS/BE,EAAe,CAAA,CAAA,sBATdjC,EAA8BkC,UAAA,CAAA,CAAA,sCAAA,CAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,OAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,GAAA,EAAA,kBAAA,cAAA,aAAA,EAAA,CAAA,wBAAA,GAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,QAAA,KAAA,EAAA,CAAA,oBAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,aAAA,GAAA,QAAA,UAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCpB3C/C,EAAA,EAAA,oBAAA,EAAoB,EAAA,KAAA,CAAA,EACGC,EAAA,CAAA,mBAA4BC,EAAA,EACjDF,EAAA,EAAA,gBAAA,EACEiD,EAAA,EAAA,QAAA,CAAA,mBAOAjD,EAAA,EAAA,mBAAA,EAAA,CAAA,EAGEkD,EAAA,iBAAA,SAAAC,EAAA,CAAAC,OAAAC,EAAAC,CAAA,EAAAC,EAAkBP,EAAAb,UAAAgB,CAAA,CAAiB,CAAA,CAAA,EAEnCK,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,CAAA,gBAMFvD,EAAA,EAAmB,EACJ,EAEnBF,EAAA,GAAA,qBAAA,CAAA,EAAgC,GAAA,SAAA,CAAA,EACYkD,EAAA,QAAA,UAAA,CAAAE,OAAAC,EAAAC,CAAA,EAAAC,EAASP,EAAAhB,MAAM,EAAI,CAAC,CAAA,CAAA,EAC5D/B,EAAA,EAAA,oBACFC,EAAA,EACAF,EAAA,GAAA,SAAA,CAAA,EAAmCkD,EAAA,QAAA,UAAA,CAAAE,OAAAC,EAAAC,CAAA,EAAAC,EAASP,EAAAhB,MAAM,EAAK,CAAC,CAAA,CAAA,EACtD/B,EAAA,EAAA,oBACFC,EAAA,EAAS,qBA7BYI,EAAA,CAAA,EAAAoD,EAAAC,EAAA,EAAA,EAAAX,EAAArC,KAAAiD,KAAA,CAAA,EAKjBtD,EAAA,CAAA,EAAAH,EAAA,kBAAA0D,CAAA,EAAwB,cAAAb,EAAApC,WAAA,EACG,cAAA+C,EAAA,EAAA,EAAAX,EAAArC,KAAAmD,WAAA,CAAA,EASNxD,EAAA,CAAA,EAAAH,EAAA,UAAAwD,EAAA,GAAA,GAAAX,EAAA7B,gBAAA,CAAA,EAUvBb,EAAA,CAAA,EAAAC,EAAA,IAAAoD,EAAA,GAAA,GAAA,kCAAA,EAAA,GAAA,EAGArD,EAAA,CAAA,EAAAC,EAAA,IAAAoD,EAAA,GAAA,GAAA,oCAAA,EAAA,GAAA;+HDTE,IAAOnD,EAAPuD,SAAOvD,CAA8B,GAAA,4BGnBzCwD,EAAA,EAAA,WAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,kBADEC,EAAA,EAAAC,EAAA,IAAAC,EAAAC,WAAAC,KAAA,GAAA,6BAEFP,EAAA,EAAA,OAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,kBADEC,EAAA,EAAAC,EAAA,IAAAI,EAAA,EAAA,EAAAH,EAAAC,WAAAG,sBAAA,EAAA,IAAA,6BAEFT,EAAA,EAAA,OAAA,CAAA,EACEC,EAAA,CAAA,EACFC,EAAA,kBADEC,EAAA,EAAAC,EAAA,IAAAC,EAAAC,WAAAI,YAAA,GAAA,6BAEFV,EAAA,EAAA,OAAA,CAAA,EACEC,EAAA,CAAA,eACFC,EAAA,kBADEC,EAAA,EAAAC,EAAA,IAAAI,EAAA,EAAA,EAAAH,EAAAC,WAAAK,YAAA,EAAA,GAAA,sCAEFX,EAAA,EAAA,SAAA,CAAA,EAAwBY,EAAA,QAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAV,EAAAW,EAAA,EAAA,OAAAC,EAASZ,EAAAa,UAAAL,CAAA,CAAiB,CAAA,CAAA,EAChDb,EAAA,EAAA,UAAA,EAAUC,EAAA,EAAA,QAAA,EAAMC,EAAA,EAAW,0BAE7BF,EAAA,EAAA,SAAA,EAAA,EAA2C,EAAA,UAAA,EAC/BC,EAAA,EAAA,QAAA,EAAMC,EAAA,EAAW,GDT/B,IAAaiB,IAAuB,IAAA,CAA9B,IAAOA,EAAP,MAAOA,CAAuB,CALpCC,aAAA,CASY,KAAAC,OAA+B,IAAIC,GACnC,KAAAC,QAAgC,IAAID,GAE9CE,YAAU,CACR,KAAKD,QAAQE,KAAK,KAAKnB,WAAWoB,QAAQ,CAC5C,CAEAR,UAAUS,EAAU,CAClBA,EAAMC,gBAAe,EACrB,KAAKP,OAAOI,KAAK,KAAKnB,WAAWoB,QAAQ,CAC3C,yCAdWP,EAAuB,sBAAvBA,EAAuBU,UAAA,CAAA,CAAA,+BAAA,CAAA,EAAAC,OAAA,CAAAxB,WAAA,aAAAyB,WAAA,YAAA,EAAAC,QAAA,CAAAX,OAAA,SAAAE,QAAA,SAAA,EAAAU,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,YAAA,GAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,QAAA,OAAA,EAAA,MAAA,EAAA,CAAA,QAAA,QAAA,EAAA,MAAA,EAAA,CAAA,QAAA,QAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICRpCrC,EAAA,EAAA,MAAA,CAAA,EAA8BY,EAAA,QAAA,UAAA,CAAA,OAAS0B,EAAAd,WAAA,CAAY,CAAA,EACjDe,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,CAAA,EAA+C,EAAAC,GAAA,EAAA,EAAA,OAAA,CAAA,EAGe,EAAAC,GAAA,EAAA,EAAA,OAAA,CAAA,EAGX,EAAAC,GAAA,EAAA,EAAA,OAAA,CAAA,EAGC,EAAAC,GAAA,EAAA,EAAA,SAAA,CAAA,EAGoB,EAAAC,GAAA,EAAA,EAAA,SAAA,CAAA,EAM1E3C,EAAA,SAlBaC,EAAA,EAAA2C,EAAA,OAAAR,EAAAhC,WAAAC,IAAA,EAGJJ,EAAA,EAAA2C,EAAA,OAAAR,EAAAhC,WAAAG,sBAAA,EAGcN,EAAA,EAAA2C,EAAA,OAAAR,EAAAhC,WAAAI,WAAA,EAGAP,EAAA,EAAA2C,EAAA,OAAAR,EAAAhC,WAAAK,YAAA,EAGgCR,EAAA,EAAA2C,EAAA,OAAA,CAAAR,EAAAP,UAAA,EAG5B5B,EAAA,EAAA2C,EAAA,OAAAR,EAAAP,UAAA;wHDRrB,IAAOZ,EAAP4B,SAAO5B,CAAuB,GAAA,EEepC,IAAA6B,GAAmB,SASnB,IAAMC,GAAW,oBACJC,GAAc,kBAErBC,GAAY,GACLC,GAAsB,CAAEC,KAAM,6BAA8BC,MAAO,EAAE,EA4ErEC,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAwE/BC,YACmBC,EACAC,EACAC,EACsBC,EACFC,EACpBC,EACAC,EAEAC,EACTC,EACAC,EACAC,GACAC,GACAC,GACAC,GAAsC,CAd7B,KAAAb,YAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,UAAAA,EACsB,KAAAC,WAAAA,EACF,KAAAC,SAAAA,EACpB,KAAAC,iBAAAA,EACA,KAAAC,mBAAAA,EAEA,KAAAC,wBAAAA,EACT,KAAAC,iBAAAA,EACA,KAAAC,gBAAAA,EACA,KAAAC,oBAAAA,GACA,KAAAC,MAAAA,GACA,KAAAC,KAAAA,GACA,KAAAC,mBAAAA,GAtFF,KAAAC,QAA4C,IAAIC,EAAiC,CAAA,CAAE,EAC3F,KAAAC,OAAsC,KAAKF,QAAQG,aAAY,EAEvD,KAAAC,UAAsC,IAAIH,EAAyB,EAAI,EAC/E,KAAAI,SAAgC,KAAKD,UAAUD,aAAY,EAEnD,KAAAG,UAAsC,IAAIL,EAAyB,EAAK,EAChF,KAAAM,SAAgC,KAAKD,UAAUH,aAAY,EAE1C,KAAAK,iBAAmB,IAAIP,EAA8B,IAAI,EAC1D,KAAAQ,gBAAkB,KAAKD,iBAAiBL,aAAY,EAInD,KAAAO,6BAA+B,IAAIT,EAA0B,CAAA,CAAE,EAC/D,KAAAU,+BAAiC,IAAIV,EAA0B,CAAA,CAAE,EAClE,KAAAW,4BAA8B,KAAKF,6BAA6BP,aAAY,EAC5E,KAAAU,8BAAgC,KAAKF,+BAA+BR,aAAY,EAM/E,KAAAW,oBAAsB,IAAIb,EAA8B,IAAI,EAC7D,KAAAc,mBAAqB,KAAKD,oBAAoBX,aAAY,EAKzD,KAAAa,oBAAsB,IAAIf,EAA0D,IAAI,EACzF,KAAAgB,mBAAqB,KAAKD,oBAAoBb,aAAY,EAKzD,KAAAe,qBAAuB,IAAIjB,EAA2C,IAAI,EAC3E,KAAAkB,oBAAsB,KAAKD,qBAAqBf,aAAY,EAAGiB,KAAKC,GAAWC,GAAMA,IAAM,IAAI,CAAC,EAE/F,KAAAC,8BAAgC,IAAIC,IAE7C,KAAAC,cAAgB,IAAIxB,EAA6B,IAAI,EAC5C,KAAAyB,aAAe,KAAKD,cAActB,aAAY,EAAGiB,KAAKC,GAAWC,GAAMA,IAAM,IAAI,CAAC,EAC3F,KAAAK,QAAU,GACV,KAAAC,SAAWhD,GAIX,KAAAiD,kBAAoB,IAAI5B,EAAwB,IAAI,EAC5C,KAAA6B,iBAAmB,KAAKD,kBAAkB1B,aAAY,EAAGiB,KACvEC,GAAWC,GAAMA,IAAM,IAAI,EAC3BS,GAAc,CAAC,EACfC,GAAQ,CAAE,EAGJ,KAAAC,YAAc,IAAIhC,EAA4B,IAAI,EAClD,KAAAiC,WAAa,KAAKD,YAAY9B,aAAY,EAAGiB,KACnDC,GAAWC,GAAMA,IAAM,IAAI,EAC3BS,GAAc,CAAC,EACfC,GAAQ,CAAE,EAMJ,KAAAG,WAAa,GAErB,KAAAC,cAAgC,CAAA,EAExB,KAAAC,eAAiB,IAAIpC,EAA+B,CAAA,CAAE,EAoB5D,KAAKyB,aACFN,KACCkB,GAAKC,GAAgB,KAAKV,kBAAkBW,KAAKD,GAAaE,gBAAkB,EAAE,CAAC,EACnFC,EAAK,CAAC,CAAC,EAERC,UAAS,EAEZ,KAAKC,eAAiB,KAAKtD,SAAS8B,KAClCsB,EAAK,CAAC,EACNG,EAAKC,GACHA,EAAQD,IAAKE,IAAY,CACvBjE,KAAMiE,EAAOjE,KACbC,MAAOgE,EAAOC,UACd,CAAC,EAELjB,GAAc,CAAC,EACfC,GAAQ,CAAE,EAGZ,KAAKiB,qBAAuBC,EAAc,CAAC,KAAKN,eAAgB,KAAKnC,eAAe,CAAC,EAAEW,KACrFyB,EAAI,CAAC,CAACM,EAAeC,CAAc,IAC5BA,EAGUD,EAAcE,KAAMC,GAAMF,EAAerE,QAAUuE,EAAEvE,KAAK,EAC3DD,KAHL,EAIV,CAAC,EAGJ,KAAKyE,oBAAsBL,EAAc,CAAC,KAAK5D,SAAU,KAAKmB,gBAAiB,KAAKiB,YAAY,CAAC,EAAEN,KACjGyB,EAAI,CAAC,CAACC,EAASM,EAAgBb,CAAW,IAAK,CAC7C,IAAIiB,EACJ,OAAIjB,GAAakB,eAAeD,UAC9BA,EAAYjB,GAAakB,cAAcD,UAC9BJ,EACTI,EAAY,CAACJ,EAAerE,KAAK,EAEjCyE,EAAYV,EAAQD,IAAKS,GAAMA,EAAEN,QAAQ,EAEpCQ,CACT,CAAC,CAAC,EAGJ,KAAKE,oBAAsB,KAAKjE,wBAAwBkE,kBAAkBvC,KACxEsB,EAAK,CAAC,EACNkB,EAAWC,GACF,KAAKrE,mBAAmBsE,iBAC7B,CACEC,UAAWF,EAASE,UACpBf,SAAUa,EAASb,UAErB,GACA,GAAI,CAEP,EACDH,EAAKmB,GACHA,EAAKC,SAASpB,IAAKqB,IAAQ,CACzBpF,KAAM,CAACoF,EAAGC,UAAWD,EAAGE,QAAQ,EAAEC,KAAK,GAAG,EAC1CtF,MAAOmF,EAAGI,QACV,CAAC,EAELvC,GAAc,CAAC,EACfC,GAAQ,CAAE,EAGZ,KAAKuC,sBAAwBrB,EAAc,CACzC,KAAKzD,wBAAwBkE,kBAC7B,KAAKjC,YAAY,CAClB,EAAEN,KACDsB,EAAK,CAAC,EACNkB,EAAU,CAAC,CAACC,EAAUtB,CAAW,IAC3B,CAACA,GAAakB,eAAea,QAAU,CAAC/B,GAAakB,eAAeD,UAC/D,KAAKgB,oBAAoBX,EAASE,SAAS,EAE7CU,EAAG,CACRC,QAAS,IACTC,KAAM,CAAA,EACNC,UAAW,GACXC,aAAc,EACdC,WAAY,EACb,CACF,EACDjC,EAAKkC,GAAaA,EAASJ,IAAI,EAC/B9B,EAAK8B,GAAQ,CACX,IAAMK,EAAS,CAAA,EACfL,OAAAA,EAAKM,QAASC,GAAS,CACrBF,EAAOG,KAAK,KAAKC,wBAAwBF,CAAK,CAAC,CACjD,CAAC,EACMF,CACT,CAAC,EACDjD,GAAc,CAAC,EACfC,GAAQ,CAAE,EAGZ,KAAKqD,0BAA4BnC,EAAc,CAC7C,KAAKQ,oBACL,KAAK9C,4BACL,KAAKxB,UAAUkG,OAAO,mCAAmC,CAAC,CAC3D,EAAElE,KACDyB,EAAI,CAAC,CAAC0C,EAASC,EAAaC,CAAM,IAAK,CACrC,IAAMC,EAAWH,EAAQI,OAAQzB,GAAOsB,EAAYI,KAAMC,IAAOA,KAAO3B,EAAGnF,KAAK,CAAC,EAEjF,OAAI2G,EAASI,OAAS,EACb,GAAGJ,EAASI,MAAM,IAAIL,CAAM,GAE5BC,EAAS7C,IAAKqB,GAAOA,EAAGpF,IAAI,EAAEuF,KAAK,IAAI,CAElD,CAAC,CAAC,EAGJ,KAAK0B,4BAA8B7C,EAAc,CAC/C,KAAKqB,sBACL,KAAK1D,8BACL,KAAKzB,UAAUkG,OAAO,0CAA0C,CAAC,CAClE,EAAElE,KACDyB,EAAI,CAAC,CAAC0C,EAASC,EAAaC,CAAM,IAAK,CACrC,IAAMC,EAAWH,EAAQI,OAAQK,GAAOR,EAAYI,KAAMC,IAAOA,KAAOG,EAAGjH,KAAK,CAAC,EAEjF,OAAI2G,EAASI,OAAS,EACb,GAAGJ,EAASI,MAAM,IAAIL,CAAM,GAE5BC,EAAS7C,IAAKmD,GAAOA,EAAGlH,IAAI,EAAEuF,KAAK,IAAI,CAElD,CAAC,CAAC,EAGJ,KAAK4B,kBAAoB,KAAKxG,wBAAwBkE,kBAAkBvC,KACtEsB,EAAK,CAAC,EACNkB,EAAWC,GACF,KAAKtE,iBAAiB2G,KAAKrC,EAASE,UAAWF,EAASb,SAAU,GAAI,GAAI,CAClF,EACDmD,GAAYC,IACVC,QAAQC,MAAMF,CAAG,EACV3B,EAAG,IAAI,EACf,EACD5B,EAAKmB,GACEA,GAAMC,QAGJD,EAAKC,QAAQpB,IAAK0D,IAAU,CACjCzH,KAAMyH,EAAKC,SACXzH,MAAOwH,EAAKE,SACZ,EALO,CAAA,CAMV,EACD1E,GAAc,CAAC,EACfC,GAAQ,CAAE,EAGZ,KAAK0E,wBAA0BxD,EAAc,CAAC,KAAK+C,kBAAmB,KAAKlF,kBAAkB,CAAC,EAAEK,KAC9FyB,EAAI,CAAC,CAAC8D,EAAkBC,CAAiB,IAClCA,EAGQD,EAAiBtD,KAAMC,GAAMsD,EAAkB7H,QAAUuE,EAAEvE,KAAK,EACjED,KAHH,EAIV,CAAC,EAGJ,KAAK+H,gCAAkC,KAAK9F,mBAAmBK,KAC7DwC,EAAWgD,GACJA,EAGE,KAAKrH,iBACTuH,WAAWF,EAAkB7H,KAAK,EAClCqC,KAAKyB,EAAKkE,IAAiBA,GAAe,CAAA,GAAIlE,IAAKqB,GAAOA,EAAGI,MAAM,CAAC,CAAC,EAJ/DG,EAAG,CAAA,CAAE,CAKf,CAAC,EAGJ,KAAKuC,kBAAoB9D,EAAc,CACrC,KAAKtC,4BACL,KAAKiG,gCACL,KAAKhG,8BACL,KAAKa,YAAY,CAClB,EAAEN,KACDyB,EAAI,CAAC,CAACoE,EAA4BC,EAAgCC,EAA8B5E,CAAW,IAAK,CAC9G,IAAI6E,EAAkBH,GAA8B,CAAA,EACpD,OAAI1E,GAAakB,eAAea,OAC9B8C,EAAkB,CAAC7E,GAAakB,cAAca,MAAM,EAC3C4C,GAAgCpB,OAAS,IAClDsB,EAAkBA,EAAgBC,OAAOH,CAA8B,GAErEC,GAA8BrB,OAAS,IACzCsB,EAAkBA,EAAgBC,OAAOF,CAA4B,GAEhEC,CACT,CAAC,CAAC,EAGJ,KAAKE,gBAAkB,KAAK5F,aAAaN,KACvCwC,EAAWrB,GACLA,GAAagF,cACR9C,EAAG,CAAA,CAAE,EAEP,KAAKvF,YAAYsI,YAAW,CACpC,EACD3E,EAAK4E,IACHA,EAAWA,EAAS5E,IAAK6E,IAAO,CAAE5I,KAAM4I,EAAG3I,MAAO2I,CAAC,EAAG,EACtDD,EAASE,QAAQ9I,EAAmB,EAC7B4I,EACR,EACD1F,GAAc,CAAC,EACfC,GAAQ,CAAE,EAGZ,KAAKN,aACFN,KACCwC,EAAWrB,GACT,KAAKrD,YAAY0I,cACfrF,GAAagF,cAAgB,CAAEM,QAAStF,EAAYgF,aAAa,EAAK,KACtE,GACA,GAAI,CACL,EAEHjF,GAAK0B,GAAS,KAAK/B,YAAYO,KAAKwB,EAAKC,QAAQpB,IAAKiF,GAAaA,CAAQ,CAAC,CAAC,EAC7EpF,EAAK,CAAC,CAAC,EAERC,UAAS,EAEZ,KAAKT,WACFd,KACCyB,EAAKkF,GAAa,CAChB,IAAMC,EAAU,IAAIxG,IACpBuG,EAAU9C,QAAS6C,GAAY,EAC5BA,EAASE,SAAW,CAAA,GAAI/C,QAASU,GAAU,CAC1C,IAAMsC,EAAWH,EAASI,OAAS,KAAOvC,EAAO5G,MAAM8G,GACvDmC,EAAQG,IAAIF,EAAU,CACpBpC,GAAIoC,EACJC,OAAQJ,EAASI,OACjBE,MAAOzC,EAAO0C,MACd9C,QAASI,EAAOJ,QAAQ1C,IAAKyF,KAAO,CAAExJ,KAAMwJ,GAAEzC,GAAI9G,MAAOuJ,GAAEvJ,KAAK,EAAG,EACpE,EACD,KAAKwC,8BAA8B4G,IACjCF,EACA,IAAIhI,EAA8C,CAAE4F,GAAIoC,EAAUM,OAAQ,CAAA,CAAE,CAAE,CAAC,CAEnF,CAAC,CACH,CAAC,EAED,KAAKrH,qBAAqBsB,KAAKwF,CAAO,CACxC,CAAC,EACDtF,EAAK,CAAC,CAAC,EAERC,UAAS,EAEZ,KAAK6F,iBAAmBtF,EAAc,CACpC,KAAKhB,WACL,KAAKf,oBACL,KAAKO,aACL,KAAKI,iBACL,KAAKwF,eAAe,CACrB,EAAElG,KACDyB,EAAI,CAAC,CAACkF,EAAWU,EAAoBlG,EAAamG,EAAiBC,CAAc,IAAK,CACpF,GAAI,CAACpG,GAAagF,eAAiB,CAACmB,GAAmBC,EAAe7C,OAAS,EAE7E,MAAO,CAAA,EAET,IAAM8C,GAAoB,KAAKC,iCAAiCd,EAAWW,CAAe,EACpFzE,GAAU,CAAA,EAChB,QAAW6E,MAAKL,EAAmBF,OAAM,EACnCK,GAAkBhD,KAAMmD,IAAMA,KAAMD,GAAEZ,MAAM,GAC9CjE,GAAQkB,KAAK2D,EAAC,EAGlB,OAAO7E,EACT,CAAC,CAAC,EAGJ,KAAK+E,wBAA0B,KAAKtJ,iBAAiBuJ,UAAS,EAAG7H,KAC/DyB,EAAK8C,GACEA,EAGE,KAAKvG,UAAU8J,QAAQvD,EAAOwD,OAAO,EAFnC,EAGV,CAAC,EAGJ,KAAKC,uBAAsB,CAC7B,CAEAC,aAAW,CACT,KAAKjH,cAAc6C,QAASqE,GAAMA,EAAEC,YAAW,CAAE,CACnD,CAEAC,mBAAiB,CACf,OAAO,KAAKhJ,iBAAiBiJ,SAAQ,CACvC,CAEAC,kBAAkB3G,EAAoB,CACpC,KAAKvC,iBAAiBgC,KAAKO,CAAM,CACnC,CAEA4G,+BAA6B,CAC3B,OAAO,KAAKjJ,6BAA6B+I,SAAQ,CACnD,CAEAG,iCAA+B,CAC7B,OAAO,KAAKjJ,+BAA+B8I,SAAQ,CACrD,CAEAI,gCAAgCC,EAAiB,CAC/C,KAAKnJ,+BAA+B6B,KAAKsH,CAAO,CAClD,CAEAC,8BAA8BD,EAAiB,CAC7C,KAAKpJ,6BAA6B8B,KAAKsH,CAAO,CAChD,CAEAE,sBAAoB,CAClB,OAAO,KAAKlJ,oBAAoB2I,SAAQ,CAC1C,CAEAQ,qBAAqB1D,EAAkB,CACrC,KAAKzF,oBAAoB0B,KAAK+D,CAAI,CACpC,CAEA2D,qBAAqBC,EAAmD,CACtE,KAAKnJ,oBAAoBwB,KAAK2H,CAAS,CACzC,CAEAC,sBAAoB,CAClB,OAAO,KAAKpJ,oBAAoByI,SAAQ,CAC1C,CAEAY,gCAAgCpC,EAAgB,CAC9C,IAAMqC,EAAa,KAAK/I,8BAA8BgJ,IAAItC,CAAQ,EAClE,OAAIqC,IAAeE,OACVF,EAAWb,SAAQ,EAAGlB,OAExB,CAAA,CACT,CAEAkC,gCAAgCxC,EAAkBM,EAAgB,CAChE,IAAM+B,EAAa,KAAK/I,8BAA8BgJ,IAAItC,CAAQ,EAC9DqC,IAAeE,QACjBF,EAAW9H,KAAK,CAAEqD,GAAIoC,EAAUM,OAAQA,CAAM,CAAE,CAEpD,CAEAmC,kCAAkCzC,EAAgB,CAChD,IAAM0C,EAAW,KAAKxJ,oBAAoBC,KACxCyB,EAAK+H,GAAoBA,EAAgBL,IAAItC,CAAQ,CAAC,EACtDpF,EAAKgI,GAAoBA,EAAiBA,EAAetF,QAAU,CAAA,CAAG,CAAC,EAErEuF,EAAiCrG,EAAG,CAAEoB,GAAIoC,EAAUM,OAAQ,CAAA,CAAE,CAAE,EAC9DwC,EAAkC,KAAKxJ,8BAA8BgJ,IAAItC,CAAQ,EACnF8C,IAAoCP,SACtCM,EAAiCC,EAAgC5K,aAAY,GAE/E,IAAM6K,EAAeF,EAA+B1J,KAClDyB,EAAKtB,GAAkCA,EAA8BgH,MAAM,CAAC,EAE9E,OAAOrF,EAAc,CAACyH,EAAUK,EAAc,KAAK5L,UAAUkG,OAAO,sBAAsB,CAAC,CAAC,EAAElE,KAC5FyB,EAAI,CAAC,CAAC0C,EAASC,EAAaC,CAAM,IAAK,CACrC,IAAMC,EAAWH,EAAQI,OAAQzB,GAAOsB,EAAYI,KAAMC,IAAOA,KAAO3B,EAAGnF,KAAK,CAAC,EAEjF,OAAI2G,EAASI,OAAS,EACb,GAAGJ,EAASI,MAAM,IAAIL,CAAM,GAE5BC,EAAS7C,IAAKqB,GAAOA,EAAGpF,IAAI,EAAEuF,KAAK,IAAI,CAElD,CAAC,CAAC,CAEN,CAEA4G,mBAAmBpD,EAAe,CAChC,KAAKhG,kBAAkBW,KAAKqF,CAAO,EAEnC,CAAC,GAAG,KAAKtG,8BAA8BgH,OAAM,CAAE,EAAEtD,QAASiG,GAAK,CAC7D,IAAMC,EAAUD,EAAEzB,SAAQ,EAC1ByB,EAAE1I,KAAK,CAAEqD,GAAIsF,EAAQtF,GAAI0C,OAAQ,CAAA,CAAE,CAAE,CACvC,CAAC,CACH,CAEA6C,oBAAkB,CAChB,OAAO,KAAKvJ,kBAAkB4H,SAAQ,CACxC,CAEO4B,WAAW9I,EAAwB,CACxC,KAAKsD,GAAKtD,GAAa+I,YAAc,UACrC,KAAK3J,QAAUY,GAAaZ,QACxBY,GAAaX,UAAYW,GAAaX,SAAW,IACnD,KAAKA,SAAWW,EAAYX,UAE9B,KAAKH,cAAce,KAAKD,CAAW,EACnC,IAAMgJ,EAAkB,KAAKC,mBAAkB,EAAGpK,KAAKW,GAAc,CAAC,EAAGC,GAAQ,CAAE,EACnFuJ,EAAgBnK,KAAKsB,EAAK,CAAC,CAAC,EAAEC,UAAS,EAEvC,KAAKP,cAAc+C,KACjBjC,EAAc,CAACqI,EAAiB,KAAK7L,iBAAiBuJ,UAAS,CAAE,CAAC,EAC/D7H,KACCkB,GAAI,CAAC,CAAA,CAAGqD,CAAM,IAAK,CACZA,IAGL,KAAK8F,qBAAuB,KAAK/L,iBAAiBgM,OAAM,EACxD,KAAKxB,qBAAqB,CACxByB,WAAYhG,EAAOiG,MACnBC,SAAUlG,EAAOmG,IAClB,EACD,KAAKC,UAAU,EAAI,EACrB,CAAC,CAAC,EAEHpJ,UAAS,CAAE,CAElB,CAEAqJ,aAAaC,EAAkB,CAC7B,GAAI,CAACA,EACH,YAAKvM,iBAAiBwM,OAAOC,GAAkBC,QAAQ,EAChD3H,EAAG,EAAI,EAGhB,IAAM4H,EAAiCC,KAAKC,MAAMN,CAAU,EAC5D,GAAII,EAAgB,CAClB,IAAMG,EAAoBtJ,EAAc,CACtC,KAAKN,eACL,KAAKc,oBACL,KAAKuC,kBACL,KAAK1B,sBACL,KAAK+C,eAAe,CACrB,EAAElG,KACDkB,GAAI,CAAC,CAACa,EAAesJ,EAAoB9F,EAAkB+F,EAAW/D,CAAc,IAAK,CACnFxF,EAAcyC,KAAM0C,GAAMA,EAAEvJ,QAAUsN,EAAetJ,QAAQhE,KAAK,GACpE,KAAK2K,kBAAkB2C,EAAetJ,MAAM,EAG9C,KAAKgH,+BACFsC,EAAeM,oBAAsB,CAAA,GAAIhH,OAAQE,GAAO4G,EAAmB7G,KAAM0C,GAAMA,EAAEvJ,QAAU8G,CAAE,CAAC,CAAC,EAGtGc,EAAiBf,KAAM0C,GAAMA,EAAEvJ,QAAUsN,EAAeO,WAAW7N,KAAK,GAC1E,KAAKkL,qBAAqBoC,EAAeO,SAAS,EAGpD,KAAK/C,iCACFwC,EAAeQ,sBAAwB,CAAA,GAAIlH,OAAQE,GAAO6G,EAAU9G,KAAM0C,GAAMA,EAAEvJ,QAAU8G,CAAE,CAAC,CAAC,EAG/F8C,EAAe/C,KAAM0C,GAAMA,EAAEvJ,QAAUsN,EAAexE,OAAO,GAC/D,KAAKoD,mBAAmBoB,EAAexE,OAAO,CAElD,CAAC,CAAC,EAIJ,OAAO3E,EAAc,CAACsJ,EAAmB,KAAKrL,mBAAmB,CAAC,EAAEC,KAClEkB,GAAI,CAAC,CAAA,CAAGmG,CAAkB,IAAK,EAC5B4D,EAAezB,iBAAmB,CAAA,GAAI3F,QAAS3D,GAAK,CACnD,IAAMuJ,EAAiBpC,EAAmB8B,IAAIjJ,EAAEuE,EAAE,EAC9CgF,GACF,KAAKJ,gCACHnJ,EAAEuE,IACDvE,EAAEiH,QAAU,CAAA,GAAI5C,OAAQE,GAAOgF,EAAetF,QAAQK,KAAM0C,GAAMA,EAAEvJ,QAAU8G,CAAE,CAAC,CAAC,CAGzF,CAAC,CACH,CAAC,EAEDvD,GAAI,IAAK,CACH+J,EAAeS,eAAiBX,GAAkBY,OACpD,KAAKrN,iBAAiBsN,YAAY,CAChCpB,SAAOqB,GAAAA,SAAOZ,EAAelC,UAAUwB,UAAU,EACjDG,OAAKmB,GAAAA,SAAOZ,EAAelC,UAAU0B,QAAQ,EAC9C,EAED,KAAKnM,iBAAiBwM,OAAOG,EAAeS,YAAY,CAE5D,CAAC,EACDjK,EAAI,IACK,EACR,CAAC,CAEN,KAEE,aAAKnD,iBAAiBwM,OAAOC,GAAkBC,QAAQ,EAChD3H,EAAG,EAAI,CAElB,CAEA+G,oBAAkB,CAChB,IAAM0B,EAAoB,KAAKC,kBAAiB,EAChD,OAAO,KAAKnB,aAAakB,CAAiB,CAC5C,CAEAnB,UAAUqB,EAAgB,CACpBA,IACF,KAAKjL,WAAa,GAClB,KAAKnC,QAAQwC,KAAK,CAAA,CAAE,GAEtB,KAAKpC,UAAUoC,KAAK,EAAI,EACxBU,EAAc,CACZ,KAAK7D,WACL,KAAKkE,oBACL,KAAKyD,kBACL,KAAK9E,WACL,KAAKJ,iBACL,KAAKb,kBAAkB,CACxB,EACEG,KACCsB,EAAK,CAAC,EACNkB,EAAU,CAAC,CAACG,EAAWP,EAAWsG,EAAS/B,EAAWW,EAAiByB,CAAS,IAAK,CACnF,IAAM5I,EAAgC,CAAC,GAAG,KAAKA,8BAA8BgH,OAAM,CAAE,EAAE1F,IAAKiG,IAC1FA,GAAEW,SAAQ,CAAE,EAERmB,EAA4B,CAAA,EAClCrJ,EAA8B0D,QAASoI,IACrCA,GAAe9E,OAAOtD,QAASlG,IAAS,CACtC6L,EAAgBzF,KAAKkI,GAAexH,GAAK,KAAO9G,EAAK,CACvD,CAAC,CAAC,EAGJ,IAAMuO,EAAqC,CACzCvJ,UAAWA,EACXP,UAAWA,EACXsG,QAASA,EACTc,gBAAiBA,EACjB2C,YAAa,KAAK1E,iCAAiCd,EAAWW,CAAe,EAC7EyB,UAAWA,EACXqD,cAAe,CACb5L,SAAU,KAAKA,SACf6L,OAAQ,KAAKtL,YAEfuL,aAAc,KAAK/L,QAAUgM,GAAaC,sBAAwBD,GAAaE,oBAEjF,YAAKC,WAAWnP,EAAW,EACpB,KAAKO,YAAY6M,UAAUuB,CAAO,CAC3C,CAAC,EACDS,EAAS,IAAM,KAAK3N,UAAUoC,KAAK,EAAK,CAAC,CAAC,EAE3CG,UACEqB,GAAoC,CACnC,KAAK7B,WAAa6B,EAAKgK,eAAe7L,WAClCiL,EACF,KAAKpN,QAAQwC,KAAKwB,EAAKiK,OAAS,CAAA,CAAE,GAE7BjK,EAAKiK,OAAS,CAAA,GAAInI,OAAS,GAC9B,KAAK9F,QAAQwC,KAAK,KAAKxC,QAAQjB,MAAMsI,OAAOrD,EAAKiK,KAAK,CAAC,EAG3D,KAAK3N,UAAUkC,KAAKwB,EAAKgK,eAAeE,OAAO,CACjD,EACC5H,GAAS,CACRD,QAAQC,MAAMA,CAAK,EACnB,KAAKnH,aAAagP,eAAe,0CAA0C,CAC7E,CAAC,CAEP,CAEAC,UAAQ,CACD,KAAKhO,UAAUqJ,SAAQ,GAC1B,KAAKsC,UAAU,EAAK,CAExB,CAEAlD,iCAAiCd,EAAuBW,EAAuB,CAC7E,IAAMzE,EAAU,CAAA,EAChB8D,OAAAA,EAAU9C,QAASoJ,GAAM,EACnB,CAAC3F,GAAmBA,IAAoB2F,EAAGxG,UAC7C5D,EAAQkB,KAAKkJ,EAAGnG,MAAM,CAE1B,CAAC,EACMjE,CACT,CAEAqK,iBAAe,CACb,OAAO5P,GAAW,KAAKmH,EACzB,CAEAsH,mBAAiB,CACf,IAAMoB,EAAS,KAAK1O,MAAM2O,SAASC,YACnC,GAAIF,EAAO,KAAKD,gBAAe,CAAE,EAC/B,OAAOI,mBAAmBH,EAAO,KAAKD,gBAAe,CAAE,CAAC,EAG1D,IAAMK,EAAsB,KAAK/O,oBAAoB2K,IAAI,KAAK+D,gBAAe,CAAE,EAC/E,GAAI,CAACK,EACH,MAAO,GAIT,IAAMC,EADgCtC,KAAKC,MAAMoC,CAAmB,EAClCtL,KAAMsC,GAAWA,EAAO7G,OAASH,EAAW,EAC9E,OAAIiQ,EACKA,EAAWC,iBAGb,EACT,CAEAzF,wBAAsB,CACpB,IAAM0F,EAAsB,KAAKlP,oBAAoB2K,IAAI,KAAK+D,gBAAe,CAAE,EAI/E,GAFA,KAAKS,cAAgB,KAAK1M,eAAelC,aAAY,EAAGiB,KAAKyB,EAAKyG,GAAMA,EAAE3D,OAAQrE,GAAMA,EAAExC,OAASH,EAAW,CAAC,CAAC,EAE5G,CAACmQ,EACH,OAGF,IAAME,EAAe1C,KAAKC,MAAMuC,CAAmB,EACnD,KAAKzM,eAAeG,KAAKwM,CAAY,CACvC,CAEQC,kBAAkBtJ,EAAmB,CAC3C,GAAI,KAAKhE,QACP,OAEF,IAAMuN,EAAI,CAAA,EACVA,EAAE,KAAKZ,gBAAe,CAAE,EAAI3I,EAAOkJ,iBACnC,KAAKlP,gBAAgBwP,YAAYD,CAAC,CACpC,CAEQE,qBAAqBpH,EAAsB,CACjD,KAAKpI,oBAAoBuI,IAAI,KAAKmG,gBAAe,EAAIhC,KAAK+C,UAAUrH,CAAO,CAAC,EAC5E,KAAK3F,eAAeG,KAAKwF,CAAO,CAClC,CAEAsH,aAAa3J,EAAmB,CAC9B,KAAKsJ,kBAAkBtJ,CAAM,EAE7B,KAAKqG,aAAarG,EAAOkJ,gBAAgB,EAAEzN,KAAKsB,EAAK,CAAC,CAAC,EAAEC,UAAS,CACpE,CAEAmL,WAAWnI,EAAc,CAEvB,GAAI,CAACA,EAAQ,CACX,KAAKxG,aAAagP,eAAe,gDAAgD,EACjF,MACF,CAEA,IAAM5M,EAAgC,CAAC,GAAG,KAAKA,8BAA8BgH,OAAM,CAAE,EAAE1F,IAAKiG,GAAMA,EAAEW,SAAQ,CAAE,EACxG4C,EAAiC,CACrCtJ,OAAQ,KAAKyG,kBAAiB,EAC9BmD,mBAAoB,KAAKhD,8BAA6B,EACtDkD,qBAAsB,KAAKjD,gCAA+B,EAC1DgD,UAAW,KAAK5C,qBAAoB,EACpCY,gBAAiBrJ,EACjBuL,aAAc,KAAKrB,qBACnBtB,UAAW,KAAKC,qBAAoB,EACpCvC,QAAS,KAAKuD,mBAAkB,GAG5B8B,EAAoBZ,KAAK+C,UAAUhD,CAAc,EACjDkD,EAAyB,CAC7BzQ,KAAM6G,EACNkJ,iBAAkB3B,EAClBsC,OAAQ,MAGJC,EAAiB,KAAKpN,eAAeoH,SAAQ,EAC7CiG,EAAcD,EAAeE,UAAWrO,GAAMA,EAAExC,OAASyQ,EAAUzQ,IAAI,EACzE4Q,IAAgB,GAClBD,EAAeC,CAAW,EAAIH,EAE9BE,EAAetK,KAAKoK,CAAS,EAG/B,KAAKN,kBAAkBM,CAAS,EAChC,KAAKH,qBAAqBK,CAAc,CAC1C,CAEAG,aAAajK,EAAc,CACzB,IAAM8J,EAAiB,KAAKpN,eAAeoH,SAAQ,EAC7CiG,EAAcD,EAAeE,UAAWrO,GAAMA,EAAExC,OAAS6G,CAAM,EAGrE,GAAI+J,IAAgB,GAAI,CACtB,KAAKvQ,aAAagP,eAAe,0CAA0C,EAC3E,MACF,CAEAsB,EAAeI,OAAOH,EAAa,CAAC,EAEpC,KAAKN,qBAAqBK,CAAc,CAC1C,CAEQrK,wBAAwB0K,EAAgC,CAC9D,IAAI3L,EAAY,GACZC,EAAW,GACT2L,EAA2B,CAC/BjR,KAAM,GACNC,MAAO+Q,EAAOE,UAEhB,OAAIF,EAAOG,aACT9L,EAAY2L,EAAOG,YAEjBH,EAAOI,YACT9L,EAAW0L,EAAOI,WAEpBH,EAAWjR,KAASqF,GAAeC,EAAW,CAACD,EAAWC,CAAQ,EAAEC,KAAK,GAAG,EAAIyL,EAAOK,MAChFJ,CACT,CAEAK,SAAO,CAEL,OADY,KAAKrQ,mBAAmBsQ,eAAc,EACvC,CACT,KAAKC,GAAYC,KACf,MAAO,gCACT,KAAKD,GAAYE,KACf,MAAO,4BACT,QACE,MAAO,+BACX,CACF,CAEAhM,oBAAoBT,EAAiB,CACnC,IAAM0M,EAAa,CACjBC,gBAAiB,GACjBnC,OAAQ,IAAIoC,GAAU,EAAGxI,IAAI,YAAapE,CAAS,GAGrD,OAAO,KAAKjE,KAAKyK,IACf,KAAK6F,QAAO,EAAK,iCACjBK,CAAU,CAEd,yCAnyBWzR,GAAoB4R,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EA4ErB,YAAY,EAAAA,EACZ,UAAU,EAAAA,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAGVM,EAAqC,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAAAS,EAAA,EAAAT,EAAAU,EAAA,EAAAV,EAAAW,EAAA,EAAAX,EAAAY,EAAA,CAAA,CAAA,wBAhFpCxS,EAAoByS,QAApBzS,EAAoB0S,SAAA,CAAA,EAA3B,IAAO1S,EAAP2S,SAAO3S,CAAoB,GAAA,EC3FjC,IAAA4S,GAAmB,sECjBXC,GAAA,CAAA,2BAEEC,EAAA,EAAA,MAAA,EAAA,kBAAwBC,EAAA,YAAAC,EAAAC,WAAAC,EAAA,sCAWtBC,EAAA,EAAA,IAAA,EAAA,EAAqBC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAN,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAASR,EAAAS,OAAA,CAAQ,CAAA,CAAA,EACpCC,EAAA,CAAA,mBACFC,EAAA,QADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,yBAAA,EAAA,GAAA,sCAEFX,EAAA,EAAA,IAAA,EAAA,EAAoBC,EAAA,QAAA,UAAA,CAAAC,EAAAU,CAAA,EAAA,IAAAf,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAASR,EAAAS,OAAA,CAAQ,CAAA,CAAA,EACnCC,EAAA,CAAA,mBACFC,EAAA,QADEC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,yBAAA,EAAA,GAAA,6BALJX,EAAA,EAAA,MAAA,EAAA,EACEa,EAAA,EAAAC,GAAA,EAAA,EAAA,IAAA,EAAA,EAAwC,EAAAC,GAAA,EAAA,EAAA,IAAA,EAAA,EAM1CP,EAAA,mBANMC,EAAA,EAAAb,EAAA,OAAA,CAAAC,EAAAmB,QAAA,EAGAP,EAAA,EAAAb,EAAA,OAAAC,EAAAmB,QAAA,0BAaFhB,EAAA,EAAA,MAAA,EAAA,EACEL,EAAA,EAAA,cAAA,EAAA,EACFa,EAAA,SADeC,EAAA,EAAAb,EAAA,WAAA,EAAA,sCAGbI,EAAA,EAAA,OAAA,EAAA,EAGEC,EAAA,QAAA,UAAA,CAAAC,EAAAe,CAAA,EAAA,IAAApB,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAASR,EAAAqB,KAAA,CAAM,CAAA,CAAA,EAMflB,EAAA,EAAA,UAAA,EAAUO,EAAA,EAAA,UAAA,EAAQC,EAAA,EAClBR,EAAA,EAAA,MAAA,EAAMO,EAAA,CAAA,EAAcC,EAAA,EAAO,qBAR3BW,GAAA,cAAAtB,EAAAuB,QAAA,EAEAxB,EAAA,aAAAC,EAAAwB,WAAA,EAA0B,qBAAA,CAAAxB,EAAAwB,WAAA,EAMpBZ,EAAA,CAAA,EAAAa,EAAAzB,EAAA0B,QAAA,0BAKVvB,EAAA,EAAA,MAAA,EAAA,EACEL,EAAA,EAAA,cAAA,EAAA,EACFa,EAAA,SADeC,EAAA,EAAAb,EAAA,WAAA,EAAA,sCAGbI,EAAA,EAAA,OAAA,EAAA,EAAwEC,EAAA,QAAA,UAAA,CAAAC,EAAAsB,CAAA,EAAA,IAAA3B,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAASR,EAAA4B,OAAA,CAAQ,CAAA,CAAA,EACvFzB,EAAA,EAAA,UAAA,EAAUO,EAAA,EAAA,WAAA,EAASC,EAAA,EACnBR,EAAA,EAAA,MAAA,EAAMO,EAAA,CAAA,mBAAwCC,EAAA,EAAO,QAA/CC,EAAA,CAAA,EAAAa,EAAAX,EAAA,EAAA,EAAA,sBAAA,CAAA,sCAGNX,EAAA,EAAA,OAAA,EAAA,EAA6CC,EAAA,QAAA,UAAA,CAAAC,EAAAwB,CAAA,EAAA,IAAA7B,EAAAO,EAAA,CAAA,EAAA,OAAAC,EAASR,EAAA8B,SAAA,CAAU,CAAA,CAAA,EAC9D3B,EAAA,EAAA,UAAA,EAAUO,EAAA,EAAA,sBAAA,EAAoBC,EAAA,EAC9BR,EAAA,EAAA,MAAA,EAAMO,EAAA,CAAA,mBAA2CC,EAAA,EAAO,QAAlDC,EAAA,CAAA,EAAAa,EAAAX,EAAA,EAAA,EAAA,yBAAA,CAAA,4BAPVE,EAAA,EAAAe,GAAA,EAAA,EAAA,OAAA,EAAA,EAA2F,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,yBAA3DlC,EAAA,OAAA,CAAAC,EAAAkC,WAAA,EAAoB,WAAAC,CAAA,sCAxDpEhC,EAAA,EAAA,MAAA,CAAA,EAAgE,EAAA,WAAA,EAAA,EACA,EAAA,kBAAA,EAC1C,EAAA,MAAA,EAAA,EAEda,EAAA,EAAAoB,GAAA,EAAA,EAAA,eAAA,EAAA,EACAjC,EAAA,EAAA,MAAA,EAAA,EACEa,EAAA,EAAAqB,GAAA,EAAA,EAAA,MAAA,EAAA,EACAlC,EAAA,EAAA,MAAA,GAAA,CAAA,EAKEC,EAAA,kBAAA,UAAA,CAAAC,EAAAiC,CAAA,EAAA,IAAAtC,EAAAO,EAAA,EAAA,OAAAC,EAAAR,EAAAuC,kBAAuC,EAAI,CAAA,CAAA,EAAC,iBAAA,UAAA,CAAAlC,EAAAiC,CAAA,EAAA,IAAAtC,EAAAO,EAAA,EAAA,OAAAC,EAAAR,EAAAuC,kBACN,EAAK,CAAA,CAAA,EAE5C5B,EAAA,EACDK,EAAA,EAAAwB,GAAA,EAAA,EAAA,MAAA,EAAA,EAQArC,EAAA,GAAA,MAAA,EAAA,EAAgC,GAAA,MAAA,EACxBO,EAAA,EAAA,eAA8EC,EAAA,EAAO,EACvF,EACF,EAER8B,EAAA,EAAA,EACEtC,EAAA,GAAA,MAAA,EAAA,EAAwC,GAAA,MAAA,EAAA,EACH,GAAA,MAAA,EAAA,EAE/Ba,EAAA,GAAA0B,GAAA,EAAA,EAAA,MAAA,EAAA,EAA0D,GAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAV,CAAA,EAiB5DtB,EAAA,EACAR,EAAA,GAAA,MAAA,EAAA,EACEa,EAAA,GAAA4B,GAAA,EAAA,EAAA,MAAA,EAAA,EAAgE,GAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAZ,CAAA,EAelEtB,EAAA,EAEAR,EAAA,GAAA,MAAA,EAAA,EAAkC,GAAA,OAAA,EAAA,EACDC,EAAA,QAAA,UAAA,CAAAC,EAAAiC,CAAA,EAAA,IAAAtC,EAAAO,EAAA,EAAA,OAAAC,EAASR,EAAA8C,MAAA,CAAO,CAAA,CAAA,EAC7C3C,EAAA,GAAA,UAAA,EAAUO,EAAA,GAAA,OAAA,EAAKC,EAAA,EACfR,EAAA,GAAA,MAAA,EAAMO,EAAA,EAAA,oBAAuCC,EAAA,EAAO,EAC/C,EACH,EACF,EAGRR,EAAA,GAAA,oCAAA,EAAA,gBAIEC,EAAA,iBAAA,SAAA2C,EAAA,CAAA1C,EAAAiC,CAAA,EAAA,IAAAtC,EAAAO,EAAA,EAAA,OAAAC,EAAkBR,EAAAgD,mBAAAD,CAAA,CAA0B,CAAA,CAAA,EAG7CpC,EAAA,MAELA,EAAA,EAAmB,EACV,2CApFUC,EAAA,CAAA,EAAAb,EAAA,mBAAAkD,CAAA,EAEPrC,EAAA,CAAA,EAAAb,EAAA,OAAAC,EAAAC,UAAA,EAGJW,EAAA,EAAAb,EAAA,YAAAC,EAAAkD,SAAAhD,EAAA,EAAsB,UAAAiD,GAAA,GAAAC,GAAA,CAAApD,EAAAmB,UAAA,CAAAnB,EAAAuC,iBAAA,CAAA,EACqC,YAAAvC,EAAAmB,SAAA,WAAA,WAAA,EAMvDP,EAAA,CAAA,EAAAb,EAAA,OAAAC,EAAAqD,UAAA,EASEzC,EAAA,CAAA,EAAA0C,GAAA,GAAAC,GAAA,GAAA,GAAAvD,EAAAwD,KAAAC,QAAA,oBAAA,EAAA,KAAAzD,EAAA0D,QAAA1D,EAAAwD,KAAAC,OAAA,EAAA,GAAA,EAQkB7C,EAAA,CAAA,EAAAb,EAAA,OAAAC,EAAA2D,QAAA,EAAgB,WAAAC,CAAA,EAmBhBhD,EAAA,CAAA,EAAAb,EAAA,OAAAC,EAAA6D,gBAAA,EAAwB,WAAAC,CAAA,EAoBtClD,EAAA,CAAA,EAAAa,EAAAX,EAAA,GAAA,GAAA,qBAAA,CAAA,EAOZF,EAAA,CAAA,EAAAb,EAAA,kBAAAC,EAAAwD,KAAAO,cAAA,EAAuC,SAAA/D,EAAAwD,KAAAQ,eAAAC,MAAA,EACF,SAAAjE,EAAAwD,KAAAQ,eAAAE,MAAA,EACA,cAAAlE,EAAAmE,WAAA,EAEV,WAAArD,EAAA,GAAA,GAAAd,EAAAoE,gBAAA,CAAA,yBAUjCvE,GAAA,CAAA,qCADFM,EAAA,EAAA,MAAA,EAAA,EAA0BC,EAAA,QAAA,UAAA,CAAAC,EAAAgE,CAAA,EAAA,IAAArE,EAAAO,EAAA,EAAA,OAAAC,EAASR,EAAAsE,YAAA,CAAa,CAAA,CAAA,EAC9CtD,EAAA,EAAAuD,GAAA,EAAA,EAAA,eAAA,EAAA,EACApE,EAAA,EAAA,KAAA,EACEL,EAAA,EAAA,MAAA,GAAA,CAAA,EACAK,EAAA,EAAA,MAAA,EAAA,EAAgC,EAAA,MAAA,EACxBO,EAAA,CAAA,cAA8EC,EAAA,EAAO,EACvF,EACF,2BANSC,EAAA,EAAAb,EAAA,mBAAAkD,CAAA,EAEarC,EAAA,CAAA,EAAAb,EAAA,YAAAC,EAAAkD,SAAAhD,EAAA,EAElBU,EAAA,CAAA,EAAA0C,GAAA,GAAAC,GAAA,EAAA,EAAAvD,EAAAwD,KAAAC,QAAA,oBAAA,EAAA,KAAAzD,EAAA0D,QAAA1D,EAAAwD,KAAAC,OAAA,EAAA,GAAA,6BAUNtD,EAAA,EAAA,UAAA,EACEO,EAAA,CAAA,EACFC,EAAA,uBADEC,EAAA,EAAAC,EAAA,IAAA2D,EAAAC,QAAA,GAAA,6BAKF3E,EAAA,EAAA,UAAA,EAAA,2CAASC,EAAA,UAAAyE,EAAAE,QAAA,EAAyB,WAAA5D,EAAA,EAAA,EAAAd,EAAA2E,aAAA,CAAA,6BARtClC,EAAA,CAAA,EACEtC,EAAA,EAAA,MAAA,EAAA,EACEa,EAAA,EAAA4D,GAAA,EAAA,EAAA,WAAA,EAAA,EAGFjE,EAAA,EAEAK,EAAA,EAAA6D,GAAA,EAAA,EAAA,cAAA,KAAA,EAAA5C,CAAA,gCALarB,EAAA,CAAA,EAAAb,EAAA,OAAAyE,EAAAC,OAAA,EAAoB,WAAAK,CAAA,0BAUjC3E,EAAA,EAAA,MAAA,EAAA,EAA8B,EAAA,UAAA,EAClBO,EAAA,EAAA,eAAA,EAAaC,EAAA,EAAW,6BAdxCR,EAAA,EAAA,MAAA,EAAA,EACEa,EAAA,EAAA+D,GAAA,EAAA,EAAA,eAAA,EAAA,EAA0D,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAA/C,CAAA,EAgB5DtB,EAAA,yBAhBiBC,EAAA,EAAAb,EAAA,OAAAC,EAAAwD,KAAAyB,IAAA,EAAgB,WAAAC,CAAA,GDnEnC,IAAaC,IAAa,IAAA,CAApB,IAAOA,EAAP,MAAOA,CAAa,CA0BxBC,YACmBC,EACAC,EACTC,EACAC,EACSC,EACAC,EACTC,EAAoB,CANX,KAAAN,YAAAA,EACA,KAAAC,UAAAA,EACT,KAAAC,IAAAA,EACA,KAAAC,aAAAA,EACS,KAAAC,UAAAA,EACA,KAAAC,mBAAAA,EACT,KAAAC,UAAAA,EA5BD,KAAAC,QAAU,GAET,KAAAC,YAAc,IAAIC,GAE5B,KAAAnC,SAAW,GACX,KAAAE,iBAAmB,GAEnB,KAAAnC,SAAW,GACX,KAAAF,YAAc,GACd,KAAAD,SAAW,GACX,KAAAW,YAAc,GAGd,KAAAf,SAAW,GACX,KAAAkC,WAAa,GACb,KAAAd,kBAAoB,GACpB,KAAAwD,SAAW,EAaR,CAEHC,UAAQ,CACN,KAAK9C,SAAW,KAAKuC,UAAUQ,SAASC,GAAgBC,KAAM,KAAK3C,MAAM4C,IAAI,EAC7E,KAAKnG,WAAa,KAAKuD,MAAM6C,MAAQ,KAAKZ,UAAUa,wBAAwB,KAAK9C,MAAM6C,KAAK,EAAI,KAChG,KAAKE,cAAa,EAElB,IAAMC,EAAsB,KAAKd,mBAAmBe,QAAQ,CAAC,oBAAoB,CAAC,EAElF,KAAK9B,cAAgB6B,EAAoBE,KAAKC,EAAKC,GAAYA,EAAOC,QAAU,KAAO,IAAK,CAAC,EAC7F,KAAKzC,iBAAmBoC,EAAoBE,KAAKC,EAAKC,GAAYA,EAAOC,QAAU,KAAO,IAAK,CAAC,CAClG,CAEAC,iBAAe,CACb,KAAKC,kBAAiB,EAEtB,IAAMC,EAAYC,GAAK,CACrB,KAAKF,kBAAiB,EACtBE,EAAEC,OAAOC,oBAAoB,OAAQH,CAAQ,CAC/C,EAEMI,EAAO,KAAKC,KAAKC,cAAcC,iBAAiB,KAAK,EAC3D,QAAWC,KAAOJ,EAChBI,EAAIC,iBAAiB,OAAQT,CAAQ,CAEzC,CAEAD,mBAAiB,CACf,KAAK1D,WAAa,KAAKgE,KAAKC,cAAcI,cAAgB,IAE1D,KAAKnC,IAAIoC,cAAa,CACxB,CAEApB,eAAa,CACX,KAAK7E,SAAW,KAAKkG,gBAAe,EACpC,KAAKrG,SAAW,KAAKsG,gBAAe,EACpC,KAAK3F,YAAc,KAAK4F,mBAAkB,EAC1C,KAAKtG,YAAc,KAAKuG,mBAAkB,EAC1C,KAAKhC,SAAW,KAAKiC,gBAAe,CACtC,CAEAtE,QAAQuE,EAAU,CAChB,SAAOC,GAAAA,SAAOD,CAAI,EAAEvE,QAAO,CAC7B,CAEAkE,iBAAe,CACb,OAAK,KAAKpE,MAAM2E,OAAS,CAAA,GAAIC,SAAW,EAC/B,KAAK9C,UAAU+C,QAAQ,oBAAoB,GAE5C,KAAK7E,MAAM2E,OAAS,CAAA,GAAIC,OAAS,IAAM,KAAK9C,UAAU+C,QAAQ,qBAAqB,CAC7F,CAEAN,oBAAkB,CAChB,IAAIO,EAAU,GACRH,EAAQ,KAAK3E,MAAM2E,OAAS,CAAA,EAElC,GAAI,CAACA,EAAMC,OACT,OAAOE,EAGT,QAASC,EAAI,EAAGA,EAAIC,KAAKC,IAAIN,EAAMC,OAAQ,EAAE,EAAGG,GAAK,EAAG,CACtD,IAAMlH,EAAO8G,EAAMI,CAAC,EACpB,GAAIlH,EAAKqH,WAAa,CAACrH,EAAKsH,SAAU,CACpCL,GAAW,GAAGjH,EAAKqH,SAAS;EAC5B,QACF,CAEAJ,GAAW,GAAGjH,EAAKqH,SAAS,IAAIrH,EAAKsH,QAAQ;CAC/C,CAEA,OAAIR,EAAMC,OAAS,KACjBE,GAAW;EAAKH,EAAMC,OAAS,EAAE,IAAI,KAAK9C,UAAU+C,QAAQ,+BAA+B,CAAC,IAGvFC,CACT,CAEAT,iBAAe,CACb,OAAQ,KAAKrE,MAAM2E,OAAS,CAAA,GAAIS,KAAMC,GAAMA,EAAEC,SAAW,KAAK3E,YAAY2E,MAAM,CAClF,CAEAhB,oBAAkB,CAChB,OAAO,KAAKtE,MAAMuF,cAAgB,EACpC,CAEAf,iBAAe,CACb,GAAM,CAAEgB,SAAAA,EAAUC,KAAAA,EAAMC,SAAAA,CAAQ,EAAKC,OAAOC,SACtC,CAAEnF,OAAAA,EAAQC,OAAAA,CAAM,EAAK,KAAKV,MAAMQ,gBAAkB,KAElDqF,EAAW,SAASpF,CAAM,GAC5BqF,EAAW,GAAGN,CAAQ,KAAKC,CAAI,GAAGC,CAAQ,GAC9C,OAAKA,EAASK,SAASF,CAAQ,EAG7BC,GAAY,WAAWE,mBAAmBtF,CAAM,CAAC,GAFjDoF,GAAY,GAAGD,CAAQ,WAAWG,mBAAmBtF,CAAM,CAAC,GAKvDoF,CACT,CAEAtG,mBAAmByG,EAA0B,CAC3C,KAAK5F,iBAAmB,GACxB,KAAKwB,YACFqE,QAAQD,EAAWxF,OAAQwF,EAAWvF,MAAM,EAC5CwC,KACCiD,EAAK,CAAC,EACNC,EAAS,IAAK,CACZ,KAAK/F,iBAAmB,GACxB,KAAK0B,IAAIoC,cAAa,CACxB,CAAC,CAAC,EAEHkC,UACErG,GAAQ,CACP,KAAKA,KAAKuF,aAAevF,EAAKuF,aAC9B,KAAKxC,cAAa,EAClB,KAAKhB,IAAIoC,cAAa,CACxB,EACCmC,GAAS,CACRC,QAAQD,MAAMA,CAAK,CACrB,CAAC,CAEP,CAEAzI,MAAI,CACF,GAAM,CAAE4C,OAAAA,EAAQC,OAAAA,CAAM,EAAK,KAAKV,MAAMQ,gBAAkB,KAExD,KAAKL,SAAW,GACZ,KAAKpC,SACP,KAAK8D,YACF2E,OAAO/F,EAAQC,CAAM,EACrBwC,KACCiD,EAAK,CAAC,EACNC,EAAS,IAAK,CACZ,KAAKjG,SAAW,GAChB,KAAK4B,IAAIoC,cAAa,CACxB,CAAC,CAAC,EAEHkC,UACC,IAAK,CACH,KAAKrG,KAAK2E,OAAS,KAAK3E,KAAK2E,OAAS,CAAA,GAAI8B,OAAQpB,GAAMA,EAAEC,SAAW,KAAK3E,YAAY2E,MAAM,EAC5F,KAAKvC,cAAa,EAClB,KAAKhB,IAAIoC,cAAa,CACxB,EACCmC,GAAS,CACRC,QAAQD,MAAMA,CAAK,EACnB,KAAKtE,aAAa0E,eAAe,0CAA0C,CAC7E,CAAC,EAGL,KAAK7E,YACFhE,KAAK4C,EAAQC,CAAM,EACnBwC,KACCiD,EAAK,CAAC,EACNC,EAAS,IAAK,CACZ,KAAKjG,SAAW,GAChB,KAAK4B,IAAIoC,cAAa,CACxB,CAAC,CAAC,EAEHkC,UACEM,GAAQ,CACP,KAAK3G,KAAK2E,MAAQ,KAAK3E,KAAK2E,OAAS,CAAA,EACrC,KAAK3E,KAAK2E,MAAMiC,KAAKD,CAAI,EACzB,KAAK5D,cAAa,EAClB,KAAKvD,mBACH,IAAIqH,EAAe,CACjBpG,OAAAA,EACAC,OAAAA,EACD,CAAC,EAEJ,KAAKqB,IAAIoC,cAAa,CACxB,EACCmC,GAAS,CACRC,QAAQD,MAAMA,CAAK,EACnB,KAAKtE,aAAa0E,eAAe,wCAAwC,CAC3E,CAAC,CAGT,CAEAtI,QAAM,CACJ,KAAKiC,iBAAmB,GACxB,KAAKwB,YACFwE,UAAU,KAAKrG,MAAMQ,eAAeC,OAAQ,KAAKT,MAAMQ,eAAeE,MAAM,EAC5EwC,KACCiD,EAAK,CAAC,EACNC,EAAS,IAAK,CACZ,KAAK/F,iBAAmB,GACxB,KAAK0B,IAAIoC,cAAa,CACxB,CAAC,CAAC,EAEHkC,UACC,IAAK,CACH,KAAKrG,KAAKuF,aAAe,GACzB,KAAKxC,cAAa,EAClB,KAAKhB,IAAIoC,cAAa,CACxB,EACCmC,GAAS,CACRC,QAAQD,MAAMA,CAAK,EACnB,KAAKtE,aAAa0E,eAAe,2CAA2C,CAC9E,CAAC,CAEP,CAEApI,UAAQ,CACN,KAAK+B,iBAAmB,GACxB,KAAKwB,YACFiF,YAAY,KAAK9G,MAAMQ,eAAeC,OAAQ,KAAKT,MAAMQ,eAAeE,MAAM,EAC9EwC,KACCiD,EAAK,CAAC,EACNC,EAAS,IAAK,CACZ,KAAK/F,iBAAmB,GACxB,KAAK0B,IAAIoC,cAAa,CACxB,CAAC,CAAC,EAEHkC,UACC,IAAK,CACH,KAAKrG,KAAKuF,aAAe,GACzB,KAAKxC,cAAa,EAClB,KAAKhB,IAAIoC,cAAa,CACxB,EACCmC,GAAS,CACRC,QAAQD,MAAMA,CAAK,EACnB,KAAKtE,aAAa0E,eAAe,6CAA6C,CAChF,CAAC,CAEP,CAEApH,OAAK,CACH,KAAK6C,UAAU4E,KAAK,KAAKxE,QAAQ,EACjC,KAAKP,aAAagF,iBAAiB,mCAAmC,CACxE,CAEA/J,QAAM,CACJ,KAAKU,SAAW,CAAC,KAAKA,SACtB,KAAKoE,IAAIoC,cAAa,CACxB,CAEArD,aAAW,CACT,KAAKuB,YAAY4E,KAAK,IAAIJ,EAAe,KAAK7G,KAAKQ,cAAc,CAAC,CACpE,yCAjRWmB,GAAauF,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,CAAA,CAAA,sBAAb9F,EAAa+F,UAAA,CAAA,CAAA,2BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,WACGE,EAAU,42CCvCvCtK,EAAA,EAAAuK,GAAA,GAAA,GAAA,MAAA,CAAA,EAAgE,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAvJ,CAAA,EA2FlC,EAAAwJ,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAxJ,CAAA,kBA3FJlC,EAAA,OAAA,CAAAsL,EAAAzF,OAAA,EAAgB,WAAA8F,CAAA;0HD8B5B,CACVC,GAAQ,WAAY,CAClBC,GAAM,YAAavF,GAAM,CAAEwF,UAAW,OAAO,CAAE,CAAC,EAChDD,GAAM,WAAYvF,GAAM,CAAEwF,UAAW,QAAQ,CAAE,CAAC,EAChDC,GAAW,yBAA0BC,GAAQ,sCAAsC,CAAC,CAAC,CACtF,CAAC,CACH,EAAAC,gBAAA,CAAA,CAAA,EAEG,IAAO7G,EAAP8G,SAAO9G,CAAa,GAAA,uFG9BZ+G,EAAA,EAAA,gCAAA,EAAA,EAQEC,EAAA,UAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAWF,EAAAG,iBAAAN,CAAA,CAAwB,CAAA,CAAA,EAAC,SAAA,SAAAA,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAC1BF,EAAAI,iBAAAP,CAAA,CAAwB,CAAA,CAAA,EACnCQ,EAAA,8BAJCC,EAAA,aAAAC,CAAA,EAAyB,aAAAA,EAAAC,WAAA,mBAAA,6BAP7BC,EAAA,CAAA,EACEC,EAAA,EAAAC,GAAA,EAAA,EAAA,gCAAA,EAAA,wDACGC,EAAA,EAAAN,EAAA,OAAA,CAAAC,EAAAM,cAAAC,EAAA,EAAA,EAAAP,EAAAM,YAAA,IAAA,MAAAC,EAAA,EAAA,EAAAP,EAAAM,YAAA,IAAA,EAAA,6BAWLlB,EAAA,EAAA,SAAA,EAAA,EAOEoB,EAAA,CAAA,mBACFV,EAAA,wBAHEC,EAAA,oBAAAU,CAAA,EAEAJ,EAAA,EAAAK,EAAA,MAAAH,EAAA,EAAA,EAAA,sBAAA,EAAA,GAAA,sCAWFnB,EAAA,EAAA,SAAA,EAAA,EAA0EC,EAAA,QAAA,UAAA,CAAAE,EAAAoB,CAAA,EAAA,IAAAlB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAmB,iBAAA,CAAkB,CAAA,CAAA,EACnGJ,EAAA,CAAA,mBACFV,EAAA,QADEO,EAAA,EAAAK,EAAA,IAAAH,EAAA,EAAA,EAAA,sBAAA,EAAA,MAAA,sCAEFnB,EAAA,EAAA,SAAA,EAAA,EAAuEC,EAAA,QAAA,UAAA,CAAAE,EAAAsB,CAAA,EAAA,IAAApB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAqB,sBAAA,CAAuB,CAAA,CAAA,EACrGN,EAAA,CAAA,mBACFV,EAAA,QADEO,EAAA,EAAAK,EAAA,IAAAH,EAAA,EAAA,EAAA,mCAAA,EAAA,MAAA,sCAEFnB,EAAA,EAAA,SAAA,EAAA,EAGEC,EAAA,QAAA,UAAA,CAAAE,EAAAwB,CAAA,EAAA,IAAAtB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAuB,wBAAA,CAAyB,CAAA,CAAA,EAElCR,EAAA,CAAA,mBACFV,EAAA,QADEO,EAAA,EAAAK,EAAA,IAAAH,EAAA,EAAA,EAAA,0CAAA,EAAA,MAAA,sCAEFnB,EAAA,EAAA,SAAA,EAAA,EAAuEC,EAAA,QAAA,UAAA,CAAAE,EAAA0B,CAAA,EAAA,IAAAxB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAyB,oBAAA,CAAqB,CAAA,CAAA,EACnGV,EAAA,CAAA,mBACFV,EAAA,QADEO,EAAA,EAAAK,EAAA,IAAAH,EAAA,EAAA,EAAA,kCAAA,EAAA,MAAA,sCAGAL,EAAA,CAAA,EACEd,EAAA,EAAA,SAAA,EAAA,EAAsBC,EAAA,QAAA,UAAA,CAAA,IAAA8B,EAAA5B,EAAA6B,CAAA,EAAAC,UAAA5B,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAA6B,yBAAAH,EAAAI,EAAA,CAA2C,CAAA,CAAA,EACxEf,EAAA,CAAA,mBACFV,EAAA,gCADEO,EAAA,CAAA,EAAAK,EAAA,IAAAH,EAAA,EAAA,EAAAY,EAAAK,KAAA,EAAA,MAAA,6BAHNtB,EAAA,CAAA,EACEC,EAAA,EAAAsB,GAAA,EAAA,EAAA,eAAA,EAAA,yBAAyCpB,EAAA,EAAAN,EAAA,UAAA2B,CAAA,sCA2BrCxB,EAAA,CAAA,EACEd,EAAA,EAAA,SAAA,EAAA,EAGEC,EAAA,QAAA,UAAA,CAAA,IAAAsC,EAAApC,EAAAqC,CAAA,EAAAP,UAAA5B,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAoC,cAAAF,CAAA,CAAsB,CAAA,CAAA,EAE/BnB,EAAA,CAAA,mBACFV,EAAA,sCAJEO,EAAA,EAAAN,EAAA,YAAA+B,GAAA,KAAA,KAAAA,EAAAC,SAAAJ,EAAAI,KAAA,EAGA1B,EAAA,EAAAK,EAAA,IAAAH,EAAA,EAAA,EAAAoB,EAAAK,IAAA,EAAA,GAAA,6BAjBR5C,EAAA,EAAA,MAAA,EAAA,EAAwC,EAAA,SAAA,EAAA,EACgB,EAAA,MAAA,EAAA,EAChB,EAAA,WAAA,EAAA,EACWoB,EAAA,EAAA,aAAA,EAAWV,EAAA,EACxDV,EAAA,EAAA,MAAA,EACEoB,EAAA,CAAA,mBACFV,EAAA,EACAV,EAAA,EAAA,WAAA,EAAA,EAAwBoB,EAAA,EAAA,iBAAA,EAAeV,EAAA,EAAW,EAC9C,EAERV,EAAA,GAAA,WAAA,KAAA,CAAA,EACEe,EAAA,GAAA8B,GAAA,EAAA,EAAA,eAAA,EAAA,EASFnC,EAAA,EAAW,+BAnBQO,EAAA,EAAAN,EAAA,oBAAAmC,CAAA,EAIb7B,EAAA,CAAA,EAAAK,EAAA,IAAAH,EAAA,EAAA,GAAAuB,GAAA,KAAA,KAAAA,EAAAE,OAAA,4BAAA,EAAA,GAAA,EAM8B3B,EAAA,CAAA,EAAAN,EAAA,UAAAoC,CAAA,6BAZxChC,EAAA,EAAAiC,GAAA,GAAA,EAAA,MAAA,EAAA,kCAAAC,GAAA,GAAAC,EAAA/B,EAAA,EAAA,EAAAd,EAAA8C,eAAA,GAAA,EAAA,GAAAD,CAAA,yBADFnC,EAAA,EAAAqC,GAAA,EAAA,CAAA,OAAAH,GAAA,EAAAI,EAAAC,OAAA,EAAA,EAAA,EAAA,2BAuCEC,EAAA,EAAA,4BAAA,EAAA,qCAEE5C,EAAA,OAAA6C,CAAA,EAAa,cAAAC,CAAA,0BAMbzD,EAAA,EAAA,MAAA,EAAA,EAAyB,EAAA,oBAAA,EAAA,EACoB,EAAA,MAAA,EAAA,EAEvCoB,EAAA,CAAA,mBACFV,EAAA,EAAM,EACY,SAFhBO,EAAA,CAAA,EAAAK,EAAA,IAAAH,EAAA,EAAA,EAAA,qBAAA,EAAA,GAAA,6BALVL,EAAA,CAAA,EACEC,EAAA,EAAA2C,GAAA,EAAA,EAAA,MAAA,EAAA,2BAAAzC,EAAA,EAAAgC,GAAA,GAAAU,EAAAC,OAAA,KAAA,KAAAD,EAAAC,MAAAN,UAAA,EAAA,EAAA,EAAA,sCAhBJxC,EAAA,CAAA,EACEd,EAAA,EAAA,MAAA,EAAA,EAMEC,EAAA,WAAA,UAAA,CAAAE,EAAA0D,CAAA,EAAA,IAAAxD,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAYF,EAAAyD,SAAA,CAAU,CAAA,CAAA,EAEtB/C,EAAA,EAAAgD,GAAA,EAAA,EAAA,4BAAA,EAAA,EAKFrD,EAAA,EACAK,EAAA,EAAAiD,GAAA,EAAA,EAAA,eAAA,CAAA,2CAXE/C,EAAA,EAAAN,EAAA,yBAAA,CAAA,EAA4B,eAAA,EAAA,EACP,yBAAA,EAAA,EAKFM,EAAA,EAAAN,EAAA,UAAAgD,EAAAC,KAAA,EAKN3C,EAAA,EAAAN,EAAA,OAAA,CAAAgD,EAAAM,OAAA,EAA0B,WAAAC,CAAA,sCAjHjDpD,EAAA,CAAA,EACEd,EAAA,EAAA,MAAA,CAAA,EAAiB,EAAA,MAAA,CAAA,EACgB,EAAA,MAAA,CAAA,EACD,EAAA,UAAA,EAChBoB,EAAA,EAAA,aAAA,EAAWV,EAAA,EACrBV,EAAA,EAAA,MAAA,EAAA,EACEe,EAAA,EAAAoD,GAAA,EAAA,EAAA,eAAA,EAAA,EAAqD,EAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,eAsBrDpE,EAAA,GAAA,2BAAA,EAAA,EAEEC,EAAA,YAAA,SAAAC,EAAA,CAAAC,EAAAkE,CAAA,EAAA,IAAAhE,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAaF,EAAAiE,aAAApE,CAAA,CAAoB,CAAA,CAAA,EAAC,oBAAA,SAAAA,EAAA,CAAAC,EAAAkE,CAAA,EAAA,IAAAhE,EAAAC,EAAA,CAAA,EAAA,OAAAC,EACbF,EAAAkE,kBAAArE,CAAA,CAAyB,CAAA,CAAA,EAAC,oBAAA,SAAAA,EAAA,CAAAC,EAAAkE,CAAA,EAAA,IAAAhE,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAC1BF,EAAAmE,kBAAAtE,CAAA,CAAyB,CAAA,CAAA,EAC/CQ,EAAA,EAA2B,EAG9BV,EAAA,GAAA,WAAA,GAAA,CAAA,EACEe,EAAA,GAAA0D,GAAA,EAAA,EAAA,SAAA,EAAA,EAAuG,GAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,EAGE,GAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,EAOxG,GAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,EAGsG,GAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,gBAUzGnE,EAAA,EAAW,EACP,EACF,EAERV,EAAA,GAAA,MAAA,EAAA,EAAgC,GAAA,MAAA,EAAA,EAE5Be,EAAA,GAAA+D,GAAA,EAAA,CAAA,gBA6BFpE,EAAA,EAEAV,EAAA,GAAA,MAAA,EAAA,EACEe,EAAA,GAAAgE,GAAA,EAAA,EAAA,eAAA,CAAA,gBA2BFrE,EAAA,EAEA6C,EAAA,GAAA,MAAA,EAAA,EACF7C,EAAA,kCA1H6CO,EAAA,CAAA,EAAAN,EAAA,UAAAN,EAAA2E,WAAA,EAclC/D,EAAA,EAAAN,EAAA,OAAAQ,EAAA,EAAA,GAAAd,EAAA4E,WAAA,CAAA,EASDhE,EAAA,CAAA,EAAAN,EAAA,UAAAN,EAAA6E,aAAA,EAOMjE,EAAA,EAAAN,EAAA,iBAAA,EAAA,EACeM,EAAA,CAAA,EAAAN,EAAA,OAAA,EAAAN,EAAAA,EAAA8E,aAAA,MAAA9E,EAAA8E,YAAAC,eAAA,OAAA/E,EAAA8E,YAAAC,cAAAC,UAAA,EAGApE,EAAA,EAAAN,EAAA,OAAA,EAAAN,EAAAA,EAAA8E,aAAA,MAAA9E,EAAA8E,YAAAC,eAAA,OAAA/E,EAAA8E,YAAAC,cAAAE,OAAA,EAKpBrE,EAAA,EAAAN,EAAA,OAAA,EAAAN,EAAAA,EAAA8E,aAAA,MAAA9E,EAAA8E,YAAAC,eAAA,OAAA/E,EAAA8E,YAAAC,cAAAE,SAAA,EAAAjF,EAAAA,EAAA8E,aAAA,MAAA9E,EAAA8E,YAAAC,eAAA,OAAA/E,EAAA8E,YAAAC,cAAAC,UAAA,EAKoBpE,EAAA,EAAAN,EAAA,OAAA,EAAAN,EAAAA,EAAA8E,aAAA,MAAA9E,EAAA8E,YAAAC,eAAA,OAAA/E,EAAA8E,YAAAC,cAAAE,OAAA,EAGRrE,EAAA,EAAAN,EAAA,OAAAQ,EAAA,GAAA,GAAAd,EAAAkF,gBAAA,CAAA,EAanBtE,EAAA,CAAA,EAAAgC,GAAA,IAAAuC,EAAArE,EAAA,GAAA,GAAAd,EAAAoF,eAAA,GAAA,GAAA,GAAAD,CAAA,EAgCevE,EAAA,CAAA,EAAAN,EAAA,OAAAQ,EAAA,GAAA,GAAAd,EAAAqF,UAAA,CAAA,EAAyB,WAAAxB,CAAA,sCAyCpClE,EAAA,EAAA,4BAAA,EAAA,EAKEC,EAAA,cAAA,SAAAC,EAAA,CAAAC,EAAAwF,CAAA,EAAA,IAAAtF,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAeF,EAAAuF,YAAA1F,CAAA,CAAmB,CAAA,CAAA,EACnCQ,EAAA,wCAJCC,EAAA,OAAAkF,CAAA,EAAa,cAAApC,CAAA,0BAOXzD,EAAA,EAAA,MAAA,EAAA,EAAyB,EAAA,oBAAA,EAAA,EACoB,EAAA,MAAA,EAAA,EAEvCoB,EAAA,CAAA,mBACFV,EAAA,EAAM,EACY,SAFhBO,EAAA,CAAA,EAAAK,EAAA,IAAAH,EAAA,EAAA,EAAA,qBAAA,EAAA,GAAA,6BALVL,EAAA,CAAA,EACEC,EAAA,EAAA+E,GAAA,EAAA,EAAA,MAAA,EAAA,2BAAA7E,EAAA,EAAAgC,GAAA,GAAA8C,EAAAnC,OAAA,KAAA,KAAAmC,EAAAnC,MAAAN,UAAA,EAAA,EAAA,EAAA,sCAhBVxC,EAAA,CAAA,EACEd,EAAA,EAAA,MAAA,EAAA,EAAoC,EAAA,SAAA,EACzB,EAAA,MAAA,EAAA,EACmB,EAAA,MAAA,EAAA,EACA,EAAA,UAAA,EACZoB,EAAA,EAAA,eAAA,EAAaV,EAAA,EACvBV,EAAA,EAAA,MAAA,EAAMoB,EAAA,CAAA,mBAA8CV,EAAA,EAAO,EAE7DK,EAAA,GAAAiF,GAAA,EAAA,EAAA,4BAAA,EAAA,EAMC,GAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EAYHvF,EAAA,EACAV,EAAA,GAAA,sBAAA,EAAA,EAGEC,EAAA,QAAA,UAAA,CAAAE,EAAA+F,CAAA,EAAA,IAAA7F,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAA8F,eAAA,CAAgB,CAAA,CAAA,EAC1BzF,EAAA,EAAsB,EACf,2CA1BEO,EAAA,CAAA,EAAAmF,EAAAjF,EAAA,EAAA,EAAA,4BAAA,CAAA,EAGWF,EAAA,CAAA,EAAAN,EAAA,UAAAoF,EAAAnC,KAAA,EAMJ3C,EAAA,EAAAN,EAAA,OAAA,CAAAoF,EAAA9B,OAAA,EAA0B,WAAAoC,CAAA,EAazCpF,EAAA,EAAAN,EAAA,OAAA2F,GAAA,EAAAC,EAAA,CAAA,6BA5BRxF,EAAA,EAAAyF,GAAA,GAAA,EAAA,eAAA,CAAA,uCAAe7F,EAAA,OAAAQ,EAAA,EAAA,EAAAd,EAAAqF,UAAA,CAAA,EAAyB,WAAAxB,CAAA,6BApI5CpD,EAAA,CAAA,EACEC,EAAA,EAAA0F,GAAA,GAAA,GAAA,eAAA,CAAA,EAAkE,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,6BAAnD1F,EAAA,EAAAN,EAAA,OAAA,EAAAN,EAAA8E,aAAA,MAAA9E,EAAA8E,YAAAyB,QAAA,EAA6B,WAAAC,CAAA,0BA0K5C7G,EAAA,EAAA,MAAA,EAAA,EACEuD,EAAA,EAAA,MAAA,EAAA,EACF7C,EAAA,yBAIA6C,EAAA,EAAA,MAAA,EAAA,EAAmD,EAAA,MAAA,EAAA,EACA,EAAA,MAAA,EAAA,EDpJrD,IAAauD,IAAsB,IAAA,CAA7B,IAAOA,EAAP,MAAOA,CAAsB,CAyBjCC,YACmBC,EACAC,EACsBC,EACtBC,EACTC,EAA8B,CAJrB,KAAAJ,OAAAA,EACA,KAAAC,QAAAA,EACsB,KAAAC,WAAAA,EACtB,KAAAC,IAAAA,EACT,KAAAC,eAAAA,EA1BA,KAAAC,sBAAwB,IAAIC,GAC5B,KAAAC,eAAiB,IAAID,GAG/B,KAAAtC,YAA+B,CAAA,EAC/B,KAAAE,cAA2C,KAAK+B,QAAQ/B,cAGxD,KAAAsC,SAAgC,KAAKP,QAAQO,SAC7C,KAAAjC,iBAA+C,KAAK0B,QAAQ1B,iBAI5D,KAAAE,gBAA8C,KAAKwB,QAAQxB,gBAC3D,KAAAtC,gBAA4CsE,EAAc,CACxD,KAAKR,QAAQxB,gBACb,KAAKwB,QAAQS,gBAAgB,CAC9B,EAAEC,KAAKC,EAAI,CAAC,CAACC,EAAgBC,CAAe,IAAMD,EAAeE,KAAMC,GAAMA,EAAErF,QAAUmF,CAAe,CAAC,CAAC,EAE3G,KAAAG,cAAgC,CAAA,EAS9B,KAAKvC,WAAa+B,EAAc,CAAC,KAAKR,QAAQiB,SAAU,KAAKjB,QAAQkB,MAAM,CAAC,EAAER,KAC5EC,EAAI,CAAC,CAAC3D,EAASL,CAAK,KAAO,CACzBK,QAASA,EACTL,MAAOA,GACP,CAAC,EAGL,KAAKqB,YAAc,KAAKM,iBAAiBoC,KACvCC,EACGQ,GACC,CAAC,KAAKjD,aAAaC,eAAeC,WAClC,CAAC,KAAKF,aAAaC,eAAeE,QAClC8C,EAAgB9E,OAAS,CAAC,CAC7B,CAEL,CAEA+E,UAAQ,CACN,KAAKC,sBACH,oBACA,wCACA,KACA,KAAKrB,QAAQsB,uBAAuB,EAGjC,KAAKpD,aAAaC,eAAeC,WACpC,KAAKiD,sBAAsB,gBAAiB,uBAAwB,KAAM,KAAKrB,QAAQuB,oBAAoB,EAGxG,KAAKrD,aAAaC,eAAeE,SACpC,KAAKgD,sBACH,qBACA,oCACA,KACA,KAAKrB,QAAQwB,yBAAyB,EAGxC,KAAKH,sBACH,oBACA,mCACA,KACA,KAAKrB,QAAQyB,uBAAuB,EAGtC,KAAKJ,sBACH,uBACA,2CACA,KACA,KAAKrB,QAAQ0B,2BAA2B,GAI5C,KAAKV,cAAcW,KACjB,KAAK3B,QAAQ1B,iBACVoC,KACCC,EAAKQ,GACHA,EAAgBS,QAASC,GAAkB,CACzC,KAAKR,sBACHQ,EAAe3G,GACf2G,EAAe1G,MACf,KACA,KAAK6E,QAAQ8B,kCAAkCD,EAAe3G,EAAE,CAAC,CAErE,CAAC,CAAC,CACH,EAEF6G,UAAS,CAAE,EAGhB,KAAKC,MAAQxB,EAAc,CAAC,KAAKP,WAAY,KAAKE,eAAe8B,aAAY,CAAE,CAAC,EAAEvB,KAChFwB,EAAU,CAAC,CAACC,EAAWC,CAAO,IACrB,KAAKlC,IAAImC,cAAc,CAC5B,CACEC,kBAAmB,CACjBC,UAAWJ,EACXC,QAASA,GAEZ,CACF,CACF,EACDzB,EAAK6B,GACIA,EAAQ,CAAC,CACjB,CAAC,EAEJ,KAAKxC,QAAQyC,WAAW,KAAKvE,WAAW,CAC1C,CAEOrB,UAAQ,CACb,KAAKmD,QAAQ0C,SAAQ,CACvB,CAEAC,aAAW,CACT,KAAK3B,cAAcY,QAASgB,GAAMA,EAAEC,YAAW,CAAE,CACnD,CAEAxB,sBACEzH,EACAkJ,EACApH,EACAqH,EAA2B,CAE3B,IAAMC,EAAc,KAAKjF,YAAYkF,OAAQC,GAASA,EAAKtJ,WAAaA,CAAQ,EAChF,GAAIoJ,EAAY3G,OAAS,EAAG,CAC1B2G,EAAY,CAAC,EAAEG,YAAczH,EAC7B,KAAKqC,YAAY,KAAKA,YAAYqF,UAAWC,GAAOA,EAAGzJ,WAAaA,CAAQ,CAAC,EAAIoJ,EAAY,CAAC,EAC9F,MACF,CACA,KAAKjF,YAAY4D,KAAK,CACpB/H,SAAUA,EACVkJ,uBAAwBA,EACxBK,YAAazH,EACbzB,aAAc8I,EACf,CACH,CAEAvJ,iBAAiBI,EAAgB,CAC3BA,IAAa,gBACf,KAAKoG,QAAQsD,kBAAkB,IAAI,EAC1B1J,IAAa,qBACtB,KAAKoG,QAAQuD,8BAA8B,CAAA,CAAE,EACpC3J,IAAa,oBACtB,KAAKoG,QAAQwD,qBAAqB,IAAI,EAC7B5J,IAAa,uBACtB,KAAKoG,QAAQyD,gCAAgC,CAAA,CAAE,EAE/C,KAAKzD,QAAQ0D,gCAAgC9J,EAAU,CAAA,CAAE,EAE3D,KAAKoG,QAAQ2D,UAAU,EAAI,CAC7B,CAEApK,iBAAiBK,EAAgB,CAC3BA,IAAa,gBACf,KAAKW,iBAAgB,EACZX,IAAa,qBACtB,KAAKa,sBAAqB,EACjBb,IAAa,uBACtB,KAAKe,wBAAuB,EACnBf,IAAa,oBACtB,KAAKiB,oBAAmB,EACfjB,IAAa,oBACtB,KAAKgK,oBAAmB,EAExB,KAAK3I,yBAAyBrB,CAAQ,CAE1C,CAEAW,kBAAgB,CACd,IAAMsJ,EAAY,KAAK9D,OAAO+D,KAAKC,GAAgC,CACjEC,MAAO,QACPC,KAAM,CACJC,SAAU,KAAKlE,QAAQmE,kBAAiB,EACxCC,QAAS,KAAKpE,QAAQqE,eACtBlJ,MAAO,uBACPmJ,YAAa,6CAEfpJ,GAAI,kBACL,EACD,KAAK8F,cAAcW,KACjBkC,EAAUU,YAAW,EAAGxC,UAAWyC,GAAU,CACvC,OAAOA,EAAW,MACpB,KAAKxE,QAAQsD,kBAAkBkB,CAAM,EACrC,KAAKxE,QAAQ2D,UAAU,EAAI,EAE/B,CAAC,CAAC,CAEN,CAEAlJ,uBAAqB,CACnB,IAAMoJ,EAAY,KAAK9D,OAAO+D,KAAKW,GAA+B,CAChET,MAAO,QACPC,KAAM,CACJC,SAAU,KAAKlE,QAAQ0E,8BAA6B,EACpDN,QAAS,KAAKpE,QAAQ2E,oBACtBxJ,MAAO,oCACPmJ,YAAa,kDAEfpJ,GAAI,uBACL,EACD,KAAK8F,cAAcW,KACjBkC,EAAUU,YAAW,EAAGxC,UAAW6C,GAAW,CACxC,OAAOA,EAAY,MACrB,KAAK5E,QAAQuD,8BAA8BqB,CAAO,EAClD,KAAK5E,QAAQ2D,UAAU,EAAI,EAE/B,CAAC,CAAC,CAEN,CAEAhJ,yBAAuB,CACrB,IAAMkJ,EAAY,KAAK9D,OAAO+D,KAAKW,GAA+B,CAChET,MAAO,QACPC,KAAM,CACJC,SAAU,KAAKlE,QAAQ6E,gCAA+B,EACtDT,QAAS,KAAKpE,QAAQ8E,sBACtB3J,MAAO,2CACPmJ,YAAa,yDAEfpJ,GAAI,yBACL,EACD,KAAK8F,cAAcW,KACjBkC,EAAUU,YAAW,EAAGxC,UAAW6C,GAAW,CACxCA,IACF,KAAK5E,QAAQyD,gCAAgCmB,CAAO,EACpD,KAAK5E,QAAQ2D,UAAU,EAAI,EAE/B,CAAC,CAAC,CAEN,CAEA9I,qBAAmB,CACjB,IAAMgJ,EAAY,KAAK9D,OAAO+D,KAAKC,GAAgC,CACjEC,MAAO,QACPC,KAAM,CACJC,SAAU,KAAKlE,QAAQ+E,qBAAoB,EAC3CX,QAAS,KAAKpE,QAAQgF,kBACtB7J,MAAO,mCACPmJ,YAAa,iDAEfpJ,GAAI,sBACL,EACD,KAAK8F,cAAcW,KACjBkC,EAAUU,YAAW,EAAGxC,UAAWyC,GAAU,CACvC,OAAOA,EAAW,MACpB,KAAKxE,QAAQwD,qBAAqBgB,CAAM,EACxC,KAAKxE,QAAQ2D,UAAU,EAAI,EAE/B,CAAC,CAAC,CAEN,CAEAC,qBAAmB,CACjB,KAAK7D,OAAO+D,KAAKmB,GAA4B,CAC3C/J,GAAI,sBACL,CACH,CAEAD,yBAAyBiK,EAAwB,CAC/C,IAAMC,EAAa,KAAKnF,QAAQoF,oBAAoB1E,KAClDC,EAAKQ,GAAoBA,EAAgBkE,IAAIH,CAAgB,CAAC,EAC9DvE,EAAKkB,GACH,KAAK9B,OAAO+D,KAAKW,GAA+B,CAC9CT,MAAO,QACPC,KAAM,CACJC,SAAU,KAAKlE,QAAQsF,gCAAgCJ,CAAgB,EACvEd,QAASmB,EAAG1D,EAAeuC,OAAO,EAClCjJ,MAAO0G,EAAe1G,MACtBmJ,YAAa,qDAEfpJ,GAAI2G,EAAe3G,GACpB,CAAC,CACH,EAEH,KAAK8F,cAAcW,KACjBwD,EAAWzE,KAAKwB,EAAW2B,GAAcA,EAAUU,YAAW,CAAE,CAAC,EAAExC,UAAW6C,GAAW,CACnF,OAAOA,EAAY,MACrB,KAAK5E,QAAQ0D,gCAAgCwB,EAAkBN,CAAO,EACtE,KAAK5E,QAAQ2D,UAAU,EAAI,EAE/B,CAAC,CAAC,CAEN,CAEAnI,cAAcgK,EAAqB,CACjC,KAAKxF,QAAQyF,mBAAmBD,EAAQ9J,KAAK,EAC7C,KAAKsE,QAAQ2D,UAAU,EAAI,CAC7B,CAEAtG,aAAa4F,EAAmB,CAC9B,KAAKjD,QAAQ3C,aAAa4F,CAAM,CAClC,CAEA3F,kBAAkB2F,EAAc,CAC9B,KAAKjD,QAAQ0F,WAAWzC,CAAM,CAChC,CAEA1F,kBAAkB0F,EAAc,CAC9B,KAAKjD,QAAQ2F,aAAa1C,CAAM,CAClC,CAEA/D,gBAAc,CACZ,KAAKoB,eAAesF,KAAK,EAAI,CAC/B,CAEAjH,YAAYkH,EAA0B,CACpC,KAAKzF,sBAAsBwF,KAAKC,CAAU,CAC5C,yCA7TWhG,GAAsBiG,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EA4BvB,YAAY,EAAAA,EAAAG,EAAA,EAAAH,EAAAI,EAAA,CAAA,CAAA,sBA5BXrG,EAAsBsG,UAAA,CAAA,CAAA,8BAAA,CAAA,EAAAC,OAAA,CAAAlI,YAAA,aAAA,EAAAmI,QAAA,CAAAjG,sBAAA,wBAAAE,eAAA,gBAAA,EAAAgG,SAAA,CAAAC,GAFtB,CAACP,EAAoB,CAAC,CAAA,EAAAQ,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,kBAAA,SAAA,EAAA,CAAA,eAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,MAAA,MAAA,WAAA,EAAA,CAAA,EAAA,MAAA,YAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,aAAA,GAAA,QAAA,gBAAA,QAAA,UAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,YAAA,oBAAA,oBAAA,SAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,iBAAA,KAAA,EAAA,CAAA,EAAA,oBAAA,MAAA,MAAA,WAAA,WAAA,EAAA,CAAA,EAAA,MAAA,MAAA,YAAA,UAAA,EAAA,CAAA,EAAA,WAAA,UAAA,EAAA,CAAA,EAAA,aAAA,aAAA,UAAA,SAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,SAAA,aAAA,YAAA,EAAA,CAAA,aAAA,GAAA,QAAA,UAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,aAAA,GAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,SAAA,OAAA,EAAA,cAAA,EAAA,CAAA,SAAA,MAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,QAAA,UAAA,EAAA,CAAA,iBAAA,GAAA,EAAA,QAAA,OAAA,EAAA,WAAA,yBAAA,eAAA,wBAAA,EAAA,CAAA,EAAA,OAAA,cAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,aAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,WAAA,cAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,UAAA,OAAA,EAAA,OAAA,cAAA,cAAA,EAAA,QAAA,SAAA,EAAA,CAAA,qBAAA,gBAAA,EAAA,QAAA,MAAA,EAAA,CAAA,UAAA,OAAA,EAAA,cAAA,OAAA,aAAA,EAAA,CAAA,EAAA,wBAAA,iBAAA,EAAA,CAAA,EAAA,kBAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAxK,EAAA,CAAAwK,EAAA,IC5BnC9M,EAAA,EAAA+M,GAAA,EAAA,EAAA,eAAA,CAAA,eA0KA/M,EAAA,EAAAgN,GAAA,EAAA,EAAA,cAAA,KAAA,EAAApH,CAAA,EAAsB,EAAAqH,GAAA,EAAA,EAAA,cAAA,KAAA,EAAArH,CAAA,QA1KPhG,EAAA,OAAAQ,EAAA,EAAA,EAAAkC,EAAA4F,KAAA,CAAA;uHD8BT,IAAOnC,EAAPmH,SAAOnH,CAAsB,GAAA,4BG7BjCoH,EAAA,CAAA,EACEC,EAAA,EAAA,4BAAA,CAAA,oCAA2BC,EAAA,EAAAC,EAAA,OAAAC,CAAA,EAAa,cAAAC,CAAA,0BAGxCC,EAAA,EAAA,KAAA,EAAsB,EAAA,oBAAA,CAAA,mBAElBA,EAAA,EAAA,OAAA,CAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,EAAO,EACW,SAJgBN,EAAA,EAAAO,GAAA,QAAAC,EAAA,EAAA,EAAA,+CAAA,CAAA,EAEhCR,EAAA,CAAA,EAAAS,EAAA,IAAAD,EAAA,EAAA,EAAA,6CAAA,EAAA,GAAA,4BAHNE,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,kBAAMV,EAAA,OAAA,CAAAW,EAAAC,OAAA,0BASRT,EAAA,EAAA,KAAA,EAAqB,EAAA,MAAA,CAAA,EAEjBL,EAAA,EAAA,MAAA,CAAA,EACFO,EAAA,EAAM,6BAjBVR,EAAA,CAAA,EACEY,EAAA,EAAAI,GAAA,EAAA,EAAA,eAAA,CAAA,eAGAJ,EAAA,EAAAK,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,EAA2B,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,6BAHZjB,EAAA,EAAAC,EAAA,OAAAO,EAAA,EAAA,EAAAI,EAAAM,KAAA,CAAA,EAAoB,WAAAC,CAAA,EAa7BnB,EAAA,CAAA,EAAAC,EAAA,OAAAW,EAAAC,OAAA,GDDR,IAAaO,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAS/BC,YACmBC,EACsBC,EACtBC,EACTC,EAA8B,CAHrB,KAAAH,QAAAA,EACsB,KAAAC,WAAAA,EACtB,KAAAC,IAAAA,EACT,KAAAC,eAAAA,EAZD,KAAAC,OAAS,GACT,KAAAC,OAAS,EAYf,CAEHC,UAAQ,CACN,KAAKC,MAAQC,EAAc,CAAC,KAAKP,WAAY,KAAKE,eAAeM,aAAY,CAAE,CAAC,EAAEC,KAChFC,EAAU,CAAC,CAACC,EAAWC,CAAO,IACrB,KAAKX,IAAIY,cAAc,CAC5B,CACEC,kBAAmB,CACjBC,UAAWJ,EACXC,QAASA,GAEZ,CACF,CACF,EACDI,EAAKC,GACIA,EAAQ,CAAC,CACjB,CAAC,EAGJ,KAAK3B,QAAU,GACf,KAAKK,MAAQ,KAAKI,QAAQmB,QAAQ,KAAKd,OAAQ,KAAKD,MAAM,EAAEM,KAC1DU,GAAYC,IACVC,QAAQC,MAAMF,CAAG,EACVG,EAAG,IAAI,EACf,EACDC,EAAS,IAAK,CACZ,KAAKlC,QAAU,EACjB,CAAC,CAAC,CAEN,yCA3CWO,GAAoB4B,EAAAC,EAAA,EAAAD,EAWrB,YAAY,EAAAA,EAAAE,EAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,sBAXX/B,EAAoBgC,UAAA,CAAA,CAAA,mCAAA,CAAA,EAAAC,OAAA,CAAA3B,OAAA,SAAAC,OAAA,QAAA,EAAA2B,SAAA,CAAAC,GAFpB,CAAA,CAAE,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,OAAA,aAAA,EAAA,CAAA,WAAA,QAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,wBAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICXflD,EAAA,EAAAoD,GAAA,EAAA,EAAA,eAAA,CAAA,qBAAe7D,EAAA,OAAAO,EAAA,EAAA,EAAAqD,EAAAhC,KAAA,CAAA;oHDaT,IAAOT,EAAP2C,SAAO3C,CAAoB,GAAA,EE6EjC,IAAa4C,IAAY,IAAA,CAAnB,IAAOA,EAAP,MAAOA,CAAY,yCAAZA,EAAY,sBAAZA,CAAY,CAAA,0BA9CrBC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAAcC,SAAS,CACrBC,cAAe,wBACfC,gBAAiBA,GAClB,EACDC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EAAoB,CAAA,CAAA,EAclB,IAAOjC,EAAPkC,SAAOlC,CAAY,GAAA,EC1FzB,IAAMmC,GAAW,kCAEJC,GAAsB,CACjCC,IAAKF,GAAW,WAChBG,QAASH,GAAW,WACpBI,MAAOJ,GAAW,UCLpB,IAAAK,GAAmB,SAKnB,IAAYC,GAAZ,SAAYA,EAAY,CACtBA,OAAAA,EAAA,KAAA,OADUA,CAEZ,EAFYA,IAAY,CAAA,CAAA,EAqCXC,GAAP,KAA2B,CAE/BC,YACSC,EACAC,EACAC,EACAC,EAA8B,CAH9B,KAAAH,gBAAAA,EACA,KAAAC,yBAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,uBAAAA,EAEP,KAAKF,yBAA2B,KAAKA,0BAA4B,6BACjE,IAAMG,EAAc,KAAKD,uBACzB,KAAKE,qBAAuBC,GAAS,GAAI,EAAEC,KACzCC,EAAI,IACKC,GAAAA,QAAOC,IAAIN,CAAW,EAAEO,MAAK,EAAGC,QAAO,CAC/C,CAAC,CAEN,GAGWC,IAAa,IAAA,CAApB,IAAOA,EAAP,MAAOA,CAAa,CA8FjB,OAAOC,0BAA0BC,EAAcC,EAA2B,CAC/E,OAAO,IAAIH,EACTE,EAAQE,MACRF,EAAQG,mBACRH,EAAQI,sBACRJ,EAAQK,aACRL,EAAQM,oBACRN,EAAQO,mBACRP,EAAQQ,iBACRR,EAAQS,kBACRT,EAAQU,aACRV,EAAQW,eACRX,EAAQY,WACRZ,EAAQa,UACRb,EAAQc,SACRd,EAAQe,UACRf,EAAQgB,iBACRhB,EAAQiB,gBACRhB,EACAD,EAAQkB,aACRlB,EAAQmB,cACRnB,EAAQoB,eACRpB,EAAQqB,eACRrB,EAAQsB,mBACRtB,EAAQuB,SAAS,CAErB,CAEO,OAAOC,oBAAoBC,EAAc,CAC9C,OAAOA,IAAW,gBAAkBA,IAAW,WAAaA,IAAW,gBACzE,CAEAzC,YACSkB,EACAwB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACPtB,GAIM,CAAA,EACNC,GAKM,CAAA,EACCC,GACAqB,EACAC,EACApC,EACAqC,EACPC,EACOC,GACAC,GACAC,GACAC,GAAiB,CA/BjB,KAAAzC,MAAAA,EACA,KAAAwB,iBAAAA,EACA,KAAAC,oBAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,kBAAAA,EACA,KAAAC,iBAAAA,EACA,KAAAC,gBAAAA,EACA,KAAAC,iBAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,KAAAA,EACA,KAAAC,UAAAA,GAYA,KAAApB,UAAAA,GACA,KAAAqB,eAAAA,EACA,KAAAC,gBAAAA,EACA,KAAApC,UAAAA,EACA,KAAAqC,YAAAA,EAEA,KAAAE,cAAAA,GACA,KAAAC,cAAAA,GACA,KAAAC,SAAAA,GACA,KAAAC,SAAAA,GArJT,KAAAC,yBAA2B,EAC3B,KAAAC,QAAqC,CACnC,mBAAoB,KAAK5C,UAAU6C,QAAQ,wDAAwD,EACnG,aAAc,KAAK7C,UAAU6C,QAAQ,qDAAqD,EAC1F,iBAAkB,KAAK7C,UAAU6C,QAAQ,sDAAsD,EAC/F,eAAgB,KAAK7C,UAAU6C,QAAQ,4DAA4D,EACnG,gBAAiB,KAAK7C,UAAU6C,QAAQ,qDAAqD,EAC7F,sBAAuB,KAAK7C,UAAU6C,QAAQ,2DAA2D,EACzG,oBAAqB,KAAK7C,UAAU6C,QAAQ,yDAAyD,EACrGC,QAAS,KAAK9C,UAAU6C,QAAQ,+CAA+C,EAC/E,sBAAuB,KAAK7C,UAAU6C,QAAQ,2DAA2D,EACzG,yBAA0B,KAAK7C,UAAU6C,QAAQ,8DAA8D,EAC/G,0BAA2B,KAAK7C,UAAU6C,QAAQ,+DAA+D,EACjH,sBAAuB,KAAK7C,UAAU6C,QAAQ,2DAA2D,EACzG,oBAAqB,KAAK7C,UAAU6C,QAAQ,yDAAyD,EACrG,sBAAuB,KAAK7C,UAAU6C,QAAQ,2DAA2D,EACzG,uBAAwB,KAAK7C,UAAU6C,QAAQ,4DAA4D,GAG7G,KAAAE,aAA0C,CACxC,mBAAoB,KAAK/C,UAAU6C,QAAQ,6DAA6D,EACxG,aAAc,KAAK7C,UAAU6C,QAAQ,uDAAuD,EAC5F,iBAAkB,KAAK7C,UAAU6C,QAAQ,2DAA2D,EACpG,eAAgB,KAAK7C,UAAU6C,QAAQ,yDAAyD,EAChG,gBAAiB,KAAK7C,UAAU6C,QAAQ,0DAA0D,EAClG,sBAAuB,KAAK7C,UAAU6C,QAAQ,gEAAgE,EAC9G,oBAAqB,KAAK7C,UAAU6C,QAAQ,8DAA8D,EAC1GC,QAAS,KAAK9C,UAAU6C,QAAQ,oDAAoD,EACpF,sBAAuB,KAAK7C,UAAU6C,QAAQ,gEAAgE,EAC9G,yBAA0B,KAAK7C,UAAU6C,QACvC,mEAAmE,EAErE,0BAA2B,KAAK7C,UAAU6C,QACxC,oEAAoE,EAEtE,sBAAuB,KAAK7C,UAAU6C,QAAQ,gEAAgE,EAC9G,oBAAqB,KAAK7C,UAAU6C,QAAQ,8DAA8D,EAC1G,sBAAuB,KAAK7C,UAAU6C,QAAQ,gEAAgE,EAC9G,uBAAwB,KAAK7C,UAAU6C,QAAQ,iEAAiE,EAChH,kBAAmB,KAAK7C,UAAU6C,QAAQ,4DAA4D,EACtG,kBAAmB,KAAK7C,UAAU6C,QAAQ,4DAA4D,GAGxG,KAAAG,OAAoC,CAClC,gBAAiB,KAAKhD,UAAU6C,QAAQ,qCAAqC,EAC7E,cAAe,KAAK7C,UAAU6C,QAAQ,mCAAmC,EACzE,aAAc,KAAK7C,UAAU6C,QAAQ,mEAAmE,EACxG,cAAe,KAAK7C,UAAU6C,QAAQ,oEAAoE,EAC1G,mBAAoB,KAAK7C,UAAU6C,QAAQ,wCAAwC,GAGrF,KAAAI,sBAAuC,CACrC,sBACA,yBACA,0BACA,oBACA,sBACA,sBAAsB,EAGxB,KAAAC,oBAAiD,CAC/CC,MAAO,KAAKnD,UAAU6C,QAAQ,6CAA6C,EAC3E,YAAa,KAAK7C,UAAU6C,QAAQ,iDAAiD,EACrF,qBAAsB,KAAK7C,UAAU6C,QAAQ,0DAA0D,EACvG,YAAa,KAAK7C,UAAU6C,QAAQ,iDAAiD,EACrFO,MAAO,KAAKpD,UAAU6C,QAAQ,6CAA6C,GAGtE,KAAAQ,gBAAkB,GAClB,KAAAC,0BAA4B,GAC5B,KAAAC,wBAA0B,GAC1B,KAAAC,gBAAkB,GAKlB,KAAAC,iBAAmB,GA2ExB,KAAKnB,aAAeA,IAAiB,KAAOA,EAAe,EAC3D,KAAKlD,YAAc6C,EACnB,KAAKyB,iBAAmBjB,GACxB,KAAK7B,UAAYA,GAAUpB,IAAKmE,KACA,CAC5BC,iBAAkBD,GAAEE,mBACpBC,eAAgBH,GAAEI,iBAClBC,aAAcL,GAAEM,eAEnB,EACD,KAAKpD,SAAWA,GAASrB,IAAK0E,IACrB,IAAIpF,GAAqBoF,GAAEC,UAAWD,GAAEE,oBAAqBF,GAAEG,KAAMH,GAAEI,OAAO,CACtF,EACD,KAAKC,eAAiB,SAAUC,GAAoB,CAClD,OAAO,KAAK3D,SAAS4D,MAAM,KAAK5D,SAAS6D,QAAU,EAAIF,GAAa,CACtE,EACA,KAAKG,eAAiB,SAAUH,GAAoB,CAClD,OAAO,KAAK3D,SAAS4D,MAAM,EAAG,KAAK5D,SAAS6D,QAAU,EAAIF,GAAa,CACzE,EACA,KAAKI,SAAQ,EACb,KAAK7C,iBAAmBA,GAAoB,6BAE5C,KAAKsB,gBAAkB,KAAK1B,YAAc,KAAKqB,OAAO,KAAKrB,WAAW,GAAK,UAAY,GACvF,KAAK2B,0BAA4B,KAAK7B,iBAClC,KAAKyB,oBAAoB,KAAKzB,gBAAgB,GAAK,QACnD,GACJ,KAAK8B,wBAA0B,KAAK7B,oBAAsB,KAAKsB,OAAO,KAAKtB,mBAAmB,GAAK,UAAY,GAC/G,IAAMmD,GAAO,KAAKjD,kBACd,KAAKgB,QAAQ,KAAKhB,iBAAiB,GAAK,KAAK5B,UAAU6C,QAAQ,+CAA+C,EAC9G,KACJ,KAAKW,gBAAkBqB,IAAc,GACrC,KAAKC,oBAAsB,KAAKlD,kBAAoB,KAAKmB,aAAa,KAAKnB,iBAAiB,GAAK,UAAY,GAC7G,KAAKmD,YAAc,CAAC,KAAK9B,sBAAsB+B,SAAS,KAAKpD,iBAAiB,EAC9E,KAAK6B,iBACH,CAAC,CAAC,KAAK7B,oBACN,KAAKD,cAAgB,oBACpB,KAAKA,cAAgB,eACrB,KAAKC,oBAAsB,qBAC3B,KAAKA,oBAAsB,uBAC3B,KAAKA,oBAAsB,wBAE/B,KAAKqD,cAAgB3F,GAAS,GAAI,EAAEC,KAClCC,EAAI,IACKC,GAAAA,QAAOC,IAAIuC,CAAI,EAAEtC,MAAK,EAAGC,QAAO,CACxC,CAAC,EAEJ,KAAKkB,UAAYA,EACnB,CAEOoE,YAAYC,EAA+B,CAChD,KAAKvE,UAAUwE,KAAKD,CAAQ,EAC5B,KAAKP,SAAQ,CACf,CAEOS,WAAWC,EAAkBC,EAA2BrG,EAAmB,CAChF,KAAK2B,SAASuE,KAAK,IAAItG,GAAqBwG,EAAUC,EAAmBrG,EAAasG,MAAS,CAAC,CAClG,CAEOC,aAAazB,EAA4B0B,EAAqB,CAInE,OAHqB,KAAK9E,UAAU+E,OAAQR,GACnCA,EAASrB,iBAAmB4B,GAAiBP,EAASnB,eAAiBA,CAC/E,EACmBU,OAAS,CAC/B,CAEOkB,aACL5B,EACA0B,EACA1F,EAA2B,CAE3B,IAAIY,EAAY,KAAKiF,mBAAmB7B,CAAY,EAChDlC,EAEJ,GAAIlB,EAAU8D,SAAW,EACvB,OAAO1E,EAAU8F,OAAO,2CAA2C,EAErE,GAAI,KAAKL,aAAazB,EAAc0B,CAAa,EAE3C9E,EAAU8D,SAAW,EACvB5C,EAAkBlB,EAAU,CAAC,EAAEgD,iBAE/B9B,EAAkB,MAEpBlB,EAAYA,EAAU+E,OAAQR,GACrBA,EAASrB,iBAAmB4B,CACpC,MACI,CACL5D,EAAkBlB,EAAU,CAAC,EAAEgD,iBAC/B,IAAMmC,EAAUnF,EAAU,CAAC,EAAEkD,eAC7BlD,EAAY,KAAKA,UAAU+E,OAAQR,GAC1BA,EAASrB,iBAAmBiC,CACpC,CACH,CACA,IAAIC,EAOJ,GANIpF,EAAU8D,OAAS,IACrBsB,EAAOpF,EAAU,CAAC,EAAEgD,kBAKlBhD,EAAU8D,SAAW,EACvB,OAAOuB,EAAGnE,CAAe,EACpB,GAAIlB,EAAU8D,SAAW,EAC9B,OAAO1E,EAAU8F,OAAO,2DAA4D,CAClFI,OAAQpE,EACRqE,YAAaH,EACd,EACI,GAAIpF,EAAU8D,OAAS,EAC5B,OAAO1E,EAAU8F,OAAO,qEAAsE,CAC5FI,OAAQpE,EACRqE,YAAaH,EACbI,oBAAqBxF,EAAU8D,OAAS,EACzC,CAEL,CAEO2B,gBAAgBrC,EAA0B,CAC/C,IAAMpD,EAAY,KAAKiF,mBAAmB7B,CAAY,EAChDsC,EAAgB1F,EAAU8D,OAE5B6B,EAAU,GAEd3F,OAAAA,EAAU4F,QAAQ,CAACrB,EAAUsB,IAAS,CAChCA,IAAU,GAAKA,IAAUH,EAAgB,EAC3CC,GAAW,QACFE,EAAQ,IACjBF,GAAW,MAGbA,GAAWpB,EAASvB,gBACtB,CAAC,EAEM2C,CACT,CAEQV,mBAAmB7B,EAA0B,CACnD,OAAO,KAAKpD,UAAU+E,OAAQR,GACrBA,EAASnB,eAAiBA,CAClC,CACH,CAEQY,UAAQ,CACd,KAAK8B,MAAQ,KAAK9F,UAAU+E,OAAQhC,GAC3BA,EAAEK,eAAiBnF,GAAa8H,IACxC,CACH,CAEOC,WAAWpE,EAAuBqE,EAAwB,CAC/D,GAAI,CAAC,KAAK9B,aAAevC,IAAkB,KAAKA,eAAiBqE,EAC/D,MAAO,GAET,IAAMC,KAAYrH,GAAAA,SAAOsH,KAAKC,IAAG,CAAE,EAAEC,SAAS,KAAKtE,yBAA0B,MAAM,EAC7EuE,KAAgBzH,GAAAA,SAAO,KAAKL,WAAW,EAC7C,OAAO0H,GAAaI,CACtB,GAzTOC,EAAAC,YAAc,CACnBC,cAAe,gBACfC,YAAa,cACbC,WAAY,aACZC,YAAa,cACbC,iBAAkB,oBANhB,IAAO5H,EAAPsH,SAAOtH,CAAa,GAAA,ECpD1B,IAAA6H,GAAmB,SCAnB,IAAaC,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAG/BC,YAA6BC,EAAsC,CAAtC,KAAAA,mBAAAA,CAAyC,CAEtEC,MAAI,CACF,GAAI,KAAKC,MACP,OAAO,KAAKA,MAGd,OAAQ,KAAKF,mBAAmBG,eAAc,EAAE,CAC9C,KAAKC,GAAYC,MACjB,KAAKD,GAAYE,KACjB,KAAKF,GAAYG,KACf,KAAKL,MAAQ,qCACb,MACF,KAAKE,GAAYI,KACf,KAAKN,MAAQ,qCACb,KACJ,CACA,OAAO,KAAKA,KACd,yCArBWJ,GAAoBW,EAAAC,EAAA,CAAA,CAAA,wBAApBZ,EAAoBa,QAApBb,EAAoBc,SAAA,CAAA,EAA3B,IAAOd,EAAPe,SAAOf,CAAoB,GAAA,EDkFjC,IAAagB,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAI/BC,YACmBC,EACAC,EACAC,EAEAC,EAAyD,CAJzD,KAAAH,KAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,UAAAA,EAEA,KAAAC,wBAAAA,EARnB,KAAAC,kBAAkE,IAAIC,EAAgB,IAAI,EACjF,KAAAC,iBAA4D,KAAKF,kBAAkBG,aAAY,EA0KjG,KAAAC,oBAAuBC,GAIrBC,GAAcC,0BAA0BF,EAAS,KAAKP,SAAS,CAtKrE,CAEHU,oBAAoBC,EAAiBC,EAAmB,CAAA,EAAE,CACxD,GAAI,CAACA,EAAQC,gBAAkBC,OAAOC,UAAUC,eAAeC,KAAKL,EAAS,gBAAgB,EAAG,CAC9F,IAAMM,EAAO,CACXC,KAAM,CAAA,EACNC,aAAc,EACdT,QAAS,MAEX,KAAKU,+BAA+BH,EAAM,IAAI,CAChD,MACE,KAAKI,4BAA4BX,EAASC,CAAO,EAAEW,UAAWL,GAC5D,KAAKG,+BAA+BH,EAAMP,CAAO,CAAC,CAGxD,CAEAU,+BAA+BH,EAAWP,EAAe,CACvD,IAAMa,EAAaN,EAAKC,KAAKM,IAAI,KAAKnB,mBAAmB,EACnDoB,EAAyBf,EAE3B,KAAKT,kBAAkByB,SAAQ,EAAGC,gBAAgBC,OAAOL,CAAU,EADnEA,EAEJ,KAAKtB,kBAAkB4B,KAAK,CAC1BF,gBAAiBF,EACjBK,MAAOb,EAAKE,aACZT,QAASO,EAAKP,QACf,CACH,CAEAW,4BAA4BX,EAAiBC,EAAmB,CAAA,EAAE,CAChE,IAAMd,EAAO,KAAKA,KAAKA,KAAI,EAC3B,OAAO,KAAKG,wBAAwB+B,kBAAkBC,KACpDC,EAAWC,GAAY,CACrB,IAAIC,EAAM,KAAKC,cAAc1B,CAAO,EAChC2B,EAAO,CAAA,EACX,OAAK3B,IACHyB,EAAM,GAAGtC,CAAI,GAAGyC,GAAoBC,GAAG,GACvCF,EAAOG,KAAKC,UACV,KAAKC,qBAAqBR,EAASS,UAAWT,EAASU,SAAUV,EAASW,cAAelC,CAAO,CAAC,GAG9F,KAAKmC,WAAWX,EAAKE,CAAI,CAClC,CAAC,EACDU,GAAW,KACT,KAAK9C,kBAAkB+C,MAAM,OAAO,EAC7BC,GAAW,KAAKlD,UAAUmD,QAAQ,0CAA0C,CAAC,EACrF,EACD1B,EAAI,KAAK2B,WAAW,EACpBC,EAAK,CAAC,CAAC,CAEX,CAEAhB,cAAc1B,EAAe,CAC3B,GAAI,CAACA,EACH,OAAOA,EAET,IAAMyB,EAAM,IAAIkB,IAAI3C,CAAO,EAC3ByB,OAAAA,EAAImB,aAAaC,QAAQ,CAACC,EAAOC,IAAQ,CACnCD,IAAU,QACZrB,EAAImB,aAAaI,OAAOD,CAAI,CAEhC,CAAC,EAEMtB,EAAIwB,SAAQ,CACrB,CAEAC,aACEC,EACAC,EAAuB,CAGvB,IAAM3B,EAAM,GADC,KAAKtC,KAAKA,KAAI,CACR,GAAGyC,GAAoByB,KAAK,GAC/C,OAAO,KAAK/D,wBAAwB+B,kBAAkBC,KACpDC,EAAWC,GAAY,CACrB,IAAMG,EAAO,CACX2B,aAAc,OACdH,eAAgBA,EAChBC,gBAAiBA,EACjBG,SAAU/B,EAAS+B,UAErB,OAAI/B,EAASW,gBACXR,EAAK,cAAmBH,EAASW,eAE/BX,EAASgC,iBACX7B,EAAK,eAAoBH,EAASgC,gBAE7B,KAAKpB,WAAWX,EAAKK,KAAKC,UAAUJ,CAAI,CAAC,CAClD,CAAC,CAAC,CAEN,CAEA8B,kBACEN,EACAC,EACAM,EAAmB,CAGnB,IAAMjC,EAAM,GADC,KAAKtC,KAAKA,KAAI,CACR,GAAGyC,GAAoB+B,OAAO,GACjD,OAAO,KAAKrE,wBAAwB+B,kBAAkBC,KACpDC,EAAWC,GAAY,CACrB,IAAMG,EAAO,CACX+B,YAAaA,EACbP,eAAgBA,EAChBC,gBAAiBA,EACjBG,SAAU/B,EAAS+B,UAErB,OAAI/B,EAASW,gBACXR,EAAK,cAAmBH,EAASW,eAE/BX,EAASgC,iBACX7B,EAAK,eAAoBH,EAASgC,gBAE7B,KAAKpB,WAAWX,EAAKK,KAAKC,UAAUJ,CAAI,CAAC,CAClD,CAAC,CAAC,CAEN,CAEOK,qBACLC,EACAC,EACA0B,EACA3D,EAAgB,CAEhB,IAAM0B,EAAoC,CACxCM,UAAWA,EACXC,SAAUA,EACViB,eAAgBlD,EAAQkD,eACxBS,qBAAsBA,EACtBzB,cAAelC,EAAQ4D,YACvBC,cAAe7D,EAAQ8D,OACvBC,YAAa/D,EAAQgE,OACrBC,cAAejE,EAAQiE,eAGnBC,EAAmBlE,EAAQkE,SAC/BC,EAAiBnE,EAAQmE,OAI3B,GAFAzC,EAAKQ,cAAgBlC,EAAQoE,sBAAwBC,OAAYrE,EAAQoE,oBAAsBpE,EAAQ4D,YAEnGM,GAAYA,EAASI,OAAS,EAAG,CAEnC,IAAMC,KADiBC,GAAAA,SAAOC,SAASP,EAAS,CAAC,EAAG,EAAE,CAAC,EACpBQ,OAAO,sBAAsB,EAChEhD,EAAKiD,qBAAuBJ,CAC9B,CAEA,GAAIJ,GAAUA,EAAOG,OAAS,EAAG,CAG/B,IAAMM,KADeJ,GAAAA,SAAOC,SAASN,EAAO,CAAC,EAAG,EAAE,CAAC,EAAEU,IAAI,EAAG,MAAM,EACnCH,OAAO,sBAAsB,EAC5DhD,EAAKoD,mBAAqBF,CAC5B,CAEA,OAAOlD,CACT,CAEOc,YAAYuC,EAAQ,CACzB,GAAIA,EAAIjB,OAAS,KAAOiB,EAAIjB,QAAU,IACpC,MAAM,IAAIkB,MAAM,KAAK5F,UAAUmD,QAAQ,oCAAoC,EAAIwC,EAAIjB,MAAM,EAE3F,OAAOiB,CACT,CASQ5C,WAAWX,EAAaE,EAAS,CACvC,IAAMuD,EAAU,IAAIC,GAAY,CAAE,eAAgB,kBAAkB,CAAE,EACtE,OAAO,KAAK/F,MAAMgG,KAAK3D,EAAKE,EAAM,CAAEuD,QAASA,EAASG,gBAAiB,EAAI,CAAE,EAAE/D,KAAKR,EAAI,KAAK2B,WAAW,CAAC,CAC3G,yCAtLWxD,GAAoBqG,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAQrBI,EAAqC,CAAA,CAAA,wBARpCzG,EAAoB0G,QAApB1G,EAAoB2G,SAAA,CAAA,EAA3B,IAAO3G,EAAP4G,SAAO5G,CAAoB,GAAA,EEpFjC,IAAa6G,IAAqB,IAAA,CAA5B,IAAOA,EAAP,MAAOA,CAAqB,CAChCC,UAAUC,EAAYC,EAAqB,CACzC,OAAOC,GAAmBD,EAAWD,CAAU,CACjD,yCAHWF,EAAqB,iDAArBA,EAAqBK,KAAA,EAAA,CAAA,EAA5B,IAAOL,EAAPM,SAAON,CAAqB,GAAA,EAMlC,SAASI,GAAmBD,EAAuBD,EAAkB,CACnE,OAAOC,EAAUI,KAAMC,GAAMA,EAAEC,KAAOP,CAAU,GAAK,IACvD,CCPA,IAAaQ,IAA0B,IAAA,CAAjC,IAAOA,EAAP,MAAOA,CAA0B,yCAA1BA,EAA0B,sBAA1BA,CAA0B,CAAA,oBAAjC,IAAOA,EAAPC,SAAOD,CAA0B,GAAA,ECOvC,IAAaE,IAAwB,IAAA,CAA/B,IAAOA,EAAP,MAAOA,CAAwB,CAQnCC,YAA6BC,EAAwC,CAAxC,KAAAA,oBAAAA,EAPrB,KAAAC,iBAAmB,IAAIC,IAEvB,KAAAC,SAAW,IAAIC,GAEN,KAAAC,UAAY,IAAIC,EAAgB,EAAK,EAC7C,KAAAC,SAAW,KAAKF,UAAUG,aAAY,EAAGC,KAAKC,GAAY,CAAC,CAAC,CAEG,CAExEC,uBAAuBC,EAAsB,EACvC,KAAKX,iBAAiBY,IAAID,CAAc,IAAM,IAAS,KAAKX,iBAAiBa,IAAIF,CAAc,IAAM,KACvG,KAAKT,SAASY,UAAUH,EAAgB,KAAKE,IAAIF,CAAc,CAAC,CAEpE,CAEAI,YAAYJ,EAAsB,CAChC,OAAO,KAAKT,SAASc,gBAAgBL,CAAc,EAAEH,KAAKC,GAAY,CAAC,CAAC,CAC1E,CAEAQ,gBAAgBN,EAAsB,CACpC,OAAO,KAAKT,SAASgB,WAAWP,CAAc,CAChD,CAEAQ,kBAAkBR,EAAsB,CACtC,OAAO,KAAKT,SAASc,gBAAgBL,CAAc,EAAEH,KACnDY,EAAKC,GACI,CAACA,EAAQC,IACjB,EACDb,GAAY,CAAC,CAAC,CAElB,CAEQI,IAAIF,EAAsB,CAChC,IAAMY,EAAmB,IAAIC,GAAiB,CAAEC,QAAS,EAAI,CAAE,EAC/D,OAAO,KAAK1B,oBAAoBc,IAAIF,EAAgBY,CAAgB,EAAEf,KACpEY,EAAKM,IACH,KAAK1B,iBAAiB2B,IAAIhB,EAAgB,EAAI,EACtB,CACtBA,eAAgBA,EAChBW,KAAMI,GAAGD,SAASG,aAAe,IAEpC,CAAC,CAEN,yCA5CW/B,GAAwBgC,EAAAC,EAAA,CAAA,CAAA,wBAAxBjC,EAAwBkC,QAAxBlC,EAAwBmC,UAAAC,WAFvB,MAAM,CAAA,EAEd,IAAOpC,EAAPqC,SAAOrC,CAAwB,GAAA,ECRrC,IAAasC,IAAkB,IAAA,CAAzB,IAAOA,EAAP,MAAOA,CAAkB,CAC7BC,YAA6BC,EAAkD,CAAlD,KAAAA,yBAAAA,CAAqD,CAElFC,UAAUC,EAAsB,CAC9B,YAAKF,yBAAyBG,uBAAuBD,CAAc,EAC5D,KAAKF,yBAAyBI,YAAYF,CAAc,EAAEG,KAC/DC,EAAKC,GAAMA,EAAEC,IAAI,EACjBC,GAAY,CAAC,CAAC,CAElB,yCATWX,GAAkBY,EAAAC,GAAA,EAAA,CAAA,CAAA,8CAAlBb,EAAkBc,KAAA,EAAA,CAAA,EAAzB,IAAOd,EAAPe,SAAOf,CAAkB,GAAA,EAalBgB,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAC/Bf,YAA6BC,EAAkD,CAAlD,KAAAA,yBAAAA,CAAqD,CAElFC,UAAUC,EAAsB,CAC9B,YAAKF,yBAAyBG,uBAAuBD,CAAc,EAC5D,KAAKF,yBAAyBe,kBAAkBb,CAAc,EAAEG,KAAKI,GAAY,CAAC,CAAC,CAC5F,yCANWK,GAAoBJ,EAAAC,GAAA,EAAA,CAAA,CAAA,gDAApBG,EAAoBF,KAAA,EAAA,CAAA,EAA3B,IAAOE,EAAPE,SAAOF,CAAoB,GAAA,EAUpBG,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAC/BlB,YAA6BC,EAAkD,CAAlD,KAAAA,yBAAAA,CAAqD,CAElFC,UAAUC,EAAsB,CAC9B,YAAKF,yBAAyBG,uBAAuBD,CAAc,EAC5D,KAAKF,yBAAyBkB,gBAAgBhB,CAAc,EAAEG,KAAKI,GAAY,CAAC,CAAC,CAC1F,yCANWQ,GAAoBP,EAAAC,GAAA,EAAA,CAAA,CAAA,gDAApBM,EAAoBL,KAAA,EAAA,CAAA,EAA3B,IAAOK,EAAPE,SAAOF,CAAoB,GAAA,EClBjC,IAAaG,IAAuB,IAAA,CAA9B,IAAOA,EAAP,MAAOA,CAAuB,yCAAvBA,EAAuB,sBAAvBA,CAAuB,CAAA,2BAHvB,CAACC,EAAwB,EAACC,QAAA,CAD3BC,EAAY,CAAA,CAAA,EAIlB,IAAOH,EAAPI,SAAOJ,CAAuB,GAAA,ECJpC,IAAaK,IAAW,IAAA,CAAlB,IAAOA,EAAP,MAAOA,CAAW,CACtBC,UAAUC,EAAU,CAClB,OAAKA,EAGEC,GAA0BD,EAAM,CAAEE,OAAQC,GAAS,EAAIC,UAAW,EAAI,CAAE,EAFtE,EAGX,yCANWN,EAAW,uCAAXA,EAAWO,KAAA,EAAA,CAAA,EAAlB,IAAOP,EAAPQ,SAAOR,CAAW,GAAA,ECExB,IAAaS,IAAiB,IAAA,CAAxB,IAAOA,EAAP,MAAOA,CAAiB,yCAAjBA,EAAiB,sBAAjBA,CAAiB,CAAA,0BAHlBC,EAAY,CAAA,CAAA,EAGlB,IAAOD,EAAPE,SAAOF,CAAiB,GAAA,ECEvB,IAAMG,GAAM,MACNC,GAAS,SACTC,GAAQ,QAMRC,IAAiB,IAAA,CAAxB,IAAOA,EAAP,MAAOA,CAAiB,CAJ9BC,aAAA,CAMW,KAAAC,aAAe,GAIhB,KAAAC,iBAAuC,CAC7C,CAAEC,SAAU,CAAEC,KAAM,CAAC,EAAIC,MAAOT,EAAG,EACnC,CAAEO,SAAU,CAAEC,KAAM,CAAC,EAAIC,MAAOR,EAAM,CAAE,EAElC,KAAAS,aAAeR,GAEfS,UAAQ,CACd,GAAI,KAAKN,aACP,OAEF,IAAMO,EAAW,KAAKN,iBAAiBO,KAAK,CAACC,EAAGC,IAAMC,GAAaF,EAAEP,QAAQ,EAAIS,GAAaD,EAAER,QAAQ,CAAC,EAEzG,QAAWU,KAAKL,EACd,GAAIM,OAAOC,UAAUC,eAAeC,KAAKT,EAAUK,CAAC,GAC5B,KAAKK,KAAOC,GAAIC,KAAKC,IAAG,EAAIb,EAASK,CAAC,EAAEV,QAAQ,EAEpE,OAAOK,EAASK,CAAC,EAAER,MAIzB,OAAO,KAAKC,YACd,CAEAgB,UAAQ,CACN,IAAMjB,EAAQ,KAAKE,SAAQ,EAC3B,KAAKgB,SAASlB,CAAK,CACrB,CAEQkB,SAASlB,EAAa,CAC5B,KAAKmB,aAA8B,CAAEnB,MAAOA,CAAK,CACnD,yCApCWN,EAAiB,sBAAjBA,EAAiB0B,UAAA,CAAA,CAAA,wBAAA,CAAA,EAAAC,OAAA,CAAAR,KAAA,OAAAjB,aAAA,cAAA,EAAA0B,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,SAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICnB9BE,EAAA,EAAA,MAAA,CAAA,EAA8BC,EAAA,CAAA,iBAAoBC,EAAA,SAA7CC,EAAA,UAAAJ,EAAAR,YAAA,EAAyBa,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAAP,EAAAd,IAAA,CAAA,2CDmBxB,IAAOnB,EAAPyC,SAAOzC,CAAiB,GAAA,EET9B,IAAa0C,IAAc,IAAA,CAArB,IAAOA,EAAP,MAAOA,CAAc,yCAAdA,EAAc,sBAAdA,CAAc,CAAA,0BAHfC,GAAcC,EAAiB,CAAA,CAAA,EAGrC,IAAOF,EAAPG,SAAOH,CAAc,GAAA","names":["compareStages","stageA","stageB","probability","USER_PIPELINES_TOKEN","CURRENT_PIPELINE","STAGE_PROBABILITY_DELTA","Pipeline","constructor","stages","id","name","findStage","probability","sortedStages","sort","compareStages","find","stage","length","findProbabilityRangeFromStage","Error","foundStage","curStage","indexOfStage","indexOf","minimum","maximum","lowerProbability","upperProbability","maximumProbability","PipelineStagePipe","transform","pipeline","probability","findStage","pure","_PipelineStagePipe","SalesOpportunitiesPipesModule","_SalesOpportunitiesPipesModule","AccessServiceInterfaceToken","InjectionToken","LoggedInUserInfoServiceInterfaceToken","InjectionToken","SalesTeamsServiceInterfaceToken","InjectionToken","en_devel_default","ContinuousVoiceRecognitionService","constructor","outputText$$","BehaviorSubject","outputText$","asObservable","isSpeechRecognitionAvailable$$","isSpeechRecognitionAvailable$","isListening","window","next","recognition","webkitSpeechRecognition","continuous","interimResults","lang","onresult","e","tempWords","Array","from","results","map","result","transcript","join","toggleVoiceRecognition","stop","start","abort","factory","ɵfac","_ContinuousVoiceRecognitionService","MIC","MIC_OFF","VoiceTextAreaDirective","constructor","el","renderer","voiceService","breakpointObserver","snackbarService","iconText","createText","isMobileScreen$","observe","Breakpoints","XSmall","pipe","map","result","matches","ngOnInit","combineLatest","isSpeechRecognitionAvailable$","isMobileScreen","isSpeechAvailable","icon","addIconToDOM","addNotAvailableIconListener","subscribe","enableSpeech","listenToIconClick","outputText$","text","updateTextAreaValue","newText","initialValue","htmlTextAreaElement","value","sentenceCaseValue","toUpperCase","slice","dispatchEvent","Event","ngOnDestroy","stop","iconListener","unavailableIconListener","listen","isListening","removeChild","addClass","appendChild","removeClass","toggleVoiceRecognition","iconName","createElement","setStyle","nativeElement","parentNode","openWithOptions","duration","action","onAction","window","open","ɵɵdirectiveInject","ElementRef","Renderer2","ContinuousVoiceRecognitionService","BreakpointObserver","SnackbarService","selectors","inputs","features","ɵɵProvidersFeature","_VoiceTextAreaDirective","VoiceDictationModule","CommonModule","_VoiceDictationModule","PagedResponseMetadata","_PagedResponseMetadata","proto","m","kwargs","toReturn","CommonResource","_CommonResource","proto","m","kwargs","toReturn","ExtractedValue","_ExtractedValue","proto","m","kwargs","toReturn","Filter","_Filter","FilterOption","_FilterOption","Icon","_Icon","IconResource","_IconResource","IconType","_IconType","PostType","_PostType","User","_User","proto","m","kwargs","toReturn","Comment","_Comment","proto","m","User","kwargs","toReturn","PostLatestComments","_PostLatestComments","proto","m","Comment","PagedResponseMetadata","kwargs","toReturn","Post","_Post","PostIdentifier","User","Icon","_PostIdentifier","RenderOption","enumStringToValue","enumRef","value","CommentRequest","_CommentRequest","proto","m","PostIdentifier","kwargs","toReturn","CommentResponse","_CommentResponse","Comment","UpdatePostTypeRequestOperationCommonResources","_UpdatePostTypeRequestOperationCommonResources","ExtractedValue","CreateCommonResourceRequest","_CreateCommonResourceRequest","CommonResource","CreatePostTypeRequest","_CreatePostTypeRequest","PostType","CreatePostTypeResponse","_CreatePostTypeResponse","ListPostsRequestDateRangeFilter","_ListPostsRequestDateRangeFilter","DeletePostTypeRequest","_DeletePostTypeRequest","UpdatePostTypeRequestOperationFilters","_UpdatePostTypeRequestOperationFilters","Filter","ListPostTypesRequestFilters","_ListPostTypesRequestFilters","GetChannelsRequest","_GetChannelsRequest","GetChannelsResponse","_GetChannelsResponse","GetPostRequest","_GetPostRequest","GetPostResponse","_GetPostResponse","Post","GetPostTypeRequest","_GetPostTypeRequest","GetPostTypeResponse","_GetPostTypeResponse","LikeRequest","_LikeRequest","LikeResponse","_LikeResponse","User","ListCommentsRequest","_ListCommentsRequest","PagedRequestOptions","ListCommentsResponse","_ListCommentsResponse","PagedResponseMetadata","ListCommonResourcesRequest","_ListCommonResourcesRequest","ListCommonResourcesResponse","_ListCommonResourcesResponse","ListPostTypesRequest","_ListPostTypesRequest","ListPostTypesResponse","_ListPostTypesResponse","ListPostsRequest","_ListPostsRequest","ListPostsResponse","_ListPostsResponse","UpdatePostTypeRequestOperation","_UpdatePostTypeRequestOperation","IconResource","_PagedRequestOptions","SubscribeRequest","_SubscribeRequest","UnlikeRequest","_UnlikeRequest","UnsubscribeRequest","_UnsubscribeRequest","UpdatePostTypeRequest","_UpdatePostTypeRequest","environment","hostMap","HostService","t","ɵɵdefineInjectable","TheLoopApiService","http","hostService","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","ɵɵinject","HttpClient","fillPostZeroValues","p","PostLatestComments","PagedResponse","results","nextCursor","hasMore","TheLoopService","api","typeId","postId","postType","operations","id","name","pagingOptions","text","fitlers","cursor","pageSize","filters","import_moment","CommentComponent","constructor","translateService","breakpointObserver","comment","iconSize","ngOnInit","calculateUsername","iconDiameter$","observe","pipe","map","result","matches","names","user","firstName","push","lastName","length","instant","username","join","fromNow","date","moment","ɵɵdirectiveInject","TranslateService","BreakpointObserver","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtext","ɵɵadvance","ɵɵproperty","ɵɵtextInterpolate","ɵɵtextInterpolate1","text","ɵɵtextInterpolate2","ɵɵpipeBind2","created","_CommentComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","loadMoreComments","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtemplate","CommentListComponent_div_1_ng_container_1_Template","CommentListComponent_div_1_ng_container_2_Template","loadingMoreComments","comment_r4","iconSize","CommentListComponent","constructor","loopService","cdr","alertService","postId","typeId","onCommentAdded","EventEmitter","currentUserName","newCommentText","commenting","comments","hasMore","nextCursor","ngOnInit","currentUser","firstName","lastName","join","initialComments","reverse","pagingMetadata","handleInput","event","shiftKey","keyCode","comment","pipe","take","finalize","detectChanges","subscribe","resp","push","emit","PostIdentifier","error","console","openErrorSnack","listComments","concat","ɵɵdirectiveInject","TheLoopService","ChangeDetectorRef","SnackbarService","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","CommentListComponent_div_1_Template","CommentListComponent_ng_container_4_Template","$event","i0","_r1","ɵɵtwoWayListener","ɵɵtwoWayBindingSet","ɵɵtextInterpolate","ɵɵtwoWayProperty","textArea_r5","_CommentListComponent","MultiSelectionDialogComponent","constructor","dialogRef","data","formControl","UntypedFormControl","ngOnInit","setValue","selected","options$","options","close","newData","value","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","title","ɵɵproperty","placeholder","ɵɵtextInterpolate1","_MultiSelectionDialogComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r2","name","ɵɵadvance","ɵɵtextInterpolate1","SingleSelectionDialogComponent","constructor","dialogRef","data","formControl","UntypedFormControl","setValue","selected","options$","options","ngOnInit","filteredOptions$","combineLatest","valueChanges","pipe","startWith","map","value","_filter","filterValue","toLowerCase","filter","option","includes","close","newData","selectedOption","setOption","event","take","subscribe","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵlistener","$event","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵtemplate","SingleSelectionDialogComponent_mat_option_9_Template","ɵɵtextInterpolate","ɵɵpipeBind1","title","auto_r3","placeholder","_SingleSelectionDialogComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","filterItem","icon","ɵɵpipeBind1","filterTypeTranslateKey","displayName","displayName$","ɵɵlistener","$event","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","removeTag","LoopFilterChipComponent","constructor","remove","EventEmitter","clicked","clickedTag","emit","filterId","event","stopPropagation","selectors","inputs","hideDelete","outputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","LoopFilterChipComponent_mat_icon_1_Template","LoopFilterChipComponent_span_2_Template","LoopFilterChipComponent_span_3_Template","LoopFilterChipComponent_span_4_Template","LoopFilterChipComponent_button_5_Template","LoopFilterChipComponent_button_6_Template","ɵɵproperty","_LoopFilterChipComponent","import_moment","THE_LOOP","MAIN_FILTER","PAGE_SIZE","ALL_CHANNELS_OPTION","name","value","LoopV2FiltersService","constructor","loopService","alertService","translate","partnerId$","markets$","salesTeamService","salespeopleService","loggedInUserInfoService","dateRangeService","urlParamService","localStorageService","route","http","environmentService","posts$$","BehaviorSubject","posts$","asObservable","loading$$","loading$","hasMore$$","hasMore$","selectedMarket$$","selectedMarket$","selectedSalespeopleUserIds$$","selectedDigitalAgentsUserIds$$","selectedSalespeopleUserIds$","selectedDigitalAgentsUserIds$","selectedSalesTeam$$","selectedSalesTeam$","selectedDateRange$$","selectedDateRange$","resourceFiltersMap$$","resourceFiltersMap$","pipe","skipWhile","f","resourceFiltersSelectedValues","Map","loopOptions$$","loopOptions$","compact","pageSize","selectedChannel$$","selectedChannel$","publishReplay","refCount","postTypes$$","postTypes$","nextCursor","subscriptions","savedFilters$$","tap","loopOptions","next","defaultChannel","take","subscribe","marketOptions$","map","markets","market","marketId","marketFilterDisplay$","combineLatest","marketOptions","selectedMarket","find","m","filteringMarketIds$","marketIds","forcedFilters","salespeopleOptions$","loggedInUserInfo$","switchMap","userInfo","listSalespersons","partnerId","resp","results","sp","firstName","lastName","join","userId","digitalagentsOptions$","getPartnerAssignees","of","version","data","requestId","responseTime","statusCode","response","agents","forEach","agent","push","armResultToFilterOption","salespeopleFilterDisplay$","stream","options","selectedIds","plural","selected","filter","some","id","length","digitalagentsFilterDisplay$","da","salesTeamOptions$","list","catchError","err","console","error","team","teamName","groupId","salesTeamFilterDisplay$","salesTeamOptions","selectedSalesTeam","selectedSalesTeamMemberUserIds$","getMembers","salespeople","filteringUserIds$","selectedSalespeopleUserIds","selectedSalesTeamMemberUserIds","selectedDigitalAgentsUserIds","selectedUserIds","concat","channelOptions$","forcedChannel","getChannels","channels","c","unshift","listPostTypes","channel","postType","postTypes","filters","filterId","typeId","set","title","label","o","values","resourceFilters$","resourceFiltersMap","selectedChannel","channelOptions","postTypeIdFilters","getPostTypeIdsForSelectedChannel","v","t","dateRangeFilterDisplay$","getFilter","instant","i18nKey","initializeSavedFilters","ngOnDestroy","s","unsubscribe","getSelectedMarket","getValue","setSelectedMarket","getSelectedSalespeopleUserIds","getSelectedDigitalAgentsUserIds","setSelectedDigitalAgentsUserIds","userIds","setSelectedSalespeopleUserIds","getSelectedSalesTeam","setSelectedSalesTeam","setSelectedDateRange","dateRange","getSelectedDateRange","getSelectedresourceFilterValues","selected$$","get","undefined","setSelectedResourceFilterValues","getFilterDisplayForResourceFilter","options$","resourceFilters","resourceFilter","resourceFiltersSelectedValues$","resourceFiltersSelectedValues$$","selectedIds$","setSelectedChannel","x","current","getSelectedChannel","initialize","instanceId","initialFilters$","loadInitialFilters","selectedDateRangeKey","getKey","beginRange","start","endRange","end","listPosts","applyFilters","serialized","setKey","DateFilterOptions","SixMonth","appliedFilters","JSON","parse","initialFieldsSet$","salespeopleOptions","daOptions","salespeopleUserIds","salesTeam","digitalagentsUserIds","dateRangeKey","Custom","setAsCustom","moment","serializedFilters","getInitialFilters","replace","selectedValues","request","postTypeIds","pagingOptions","cursor","renderOption","RenderOption","RENDER_OPTION_COMPACT","RENDER_OPTION_FULL","saveFilter","finalize","pagingMetadata","posts","hasMore","openErrorSnack","nextPage","pt","getLoopFilterId","params","snapshot","queryParams","decodeURIComponent","localStorageFilters","mainFilter","serializedFields","savedFiltersStorage","savedFilters$","savedFilters","applyFiltersToURL","p","applyParams","saveFiltersToStorage","stringify","selectFilter","newFilter","expiry","currentFilters","foundFilter","findIndex","removeFilter","splice","result","filterUser","_user_id","first_name","last_name","email","getHost","getEnvironment","Environment","DEMO","PROD","apiOptions","withCredentials","HttpParams","ɵɵinject","TheLoopService","SnackbarService","TranslateService","SalesTeamService","SalespersonService","LoggedInUserInfoServiceInterfaceToken","DateRangeSelectorService","URLParamService","LocalStorageService","ActivatedRoute","HttpClient","EnvironmentService","factory","ɵfac","_LoopV2FiltersService","import_moment","ɵɵelementContainer","ɵɵelement","ɵɵproperty","ctx_r1","safeStyles","ɵɵsanitizeHtml","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","expand","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","_r4","ɵɵtemplate","PostComponent_div_0_div_9_a_1_Template","PostComponent_div_0_div_9_a_2_Template","expanded","_r5","like","ɵɵclassProp","hasLiked","likeTooltip","ɵɵtextInterpolate","likeText","_r6","follow","_r7","unfollow","PostComponent_div_0_ng_template_23_span_0_Template","PostComponent_div_0_ng_template_23_ng_template_1_Template","ɵɵtemplateRefExtractor","isFollowing","followedBlock_r8","PostComponent_div_0_ng_container_4_Template","PostComponent_div_0_div_6_Template","_r1","readMoreAnimating","PostComponent_div_0_div_9_Template","ɵɵelementContainerStart","PostComponent_div_0_div_18_Template","PostComponent_div_0_ng_template_19_Template","PostComponent_div_0_div_22_Template","PostComponent_div_0_ng_template_23_Template","share","$event","reloadSubscription","streamIcon_r11","safeHtml","ɵɵpureFunction1","_c1","expandable","ɵɵtextInterpolate2","ɵɵpipeBind2","post","created","fromNow","reacting","reactionBlock_r9","followingLoading","followBlock_r10","latestComments","postIdentifier","typeId","postId","currentUser","commentIconSize$","_r12","clickedPost","PostComponent_ng_template_1_ng_container_1_Template","icon_r13","matIcon","iconPath","postIconSize$","PostComponent_ng_template_3_ng_container_1_mat_icon_2_Template","PostComponent_ng_template_3_ng_container_1_ng_template_3_Template","iconImage_r14","PostComponent_ng_template_3_ng_container_1_Template","PostComponent_ng_template_3_ng_template_2_Template","icon","defaultIcon_r15","PostComponent","constructor","loopService","translate","cdr","alertService","sanitizer","breakpointObserver","clipboard","compact","postClicked","EventEmitter","shareURL","ngOnInit","sanitize","SecurityContext","HTML","html","style","bypassSecurityTrustHtml","computeValues","breakpointObserver$","observe","pipe","map","result","matches","ngAfterViewInit","calculateReadMore","listener","e","target","removeEventListener","imgs","body","nativeElement","querySelectorAll","img","addEventListener","offsetHeight","detectChanges","computeLikeText","computeHasLiked","computeIsFollowing","computeLikeTooltip","computeShareURL","date","moment","likes","length","instant","tooltip","i","Math","min","firstName","lastName","some","l","userId","isSubscribed","protocol","host","pathname","window","location","typePath","shareUrl","includes","encodeURIComponent","identifier","getPost","take","finalize","subscribe","error","console","unlike","filter","openErrorSnack","user","push","PostIdentifier","unsubscribe","copy","openSuccessSnack","emit","ɵɵdirectiveInject","TheLoopService","TranslateService","ChangeDetectorRef","SnackbarService","DomSanitizer","BreakpointObserver","Clipboard","selectors","viewQuery","rf","ctx","ElementRef","PostComponent_div_0_Template","PostComponent_ng_template_1_Template","PostComponent_ng_template_3_Template","compactTemplate_r16","trigger","state","maxHeight","transition","animate","changeDetection","_PostComponent","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","selectFilterItem","removeFilterItem","ɵɵelementEnd","ɵɵproperty","filterItem_r4","filterId","ɵɵelementContainerStart","ɵɵtemplate","LoopV2FiltersComponent_ng_container_0_ng_container_1_ng_container_7_sales_common_loop_filter_chip_1_Template","ɵɵadvance","displayName$","ɵɵpipeBind1","ɵɵtext","filterSelection_r5","ɵɵtextInterpolate1","_r6","openMarketDialog","_r7","openSalespeopleDialog","_r8","openDigitalAgentsDialog","_r9","openSalesTeamDialog","resourceFilter_r11","_r10","$implicit","openResourceFilterDialog","id","title","LoopV2FiltersComponent_ng_container_0_ng_container_1_ng_container_17_ng_container_1_Template","resourceFilters_r12","channel_r14","_r13","selectChannel","currentChannel_r15","value","name","LoopV2FiltersComponent_ng_container_0_ng_container_1_Conditional_21_Conditional_0_Conditional_0_ng_container_12_Template","channelsMenu_r16","channels_r17","LoopV2FiltersComponent_ng_container_0_ng_container_1_Conditional_21_Conditional_0_Conditional_0_Template","ɵɵconditional","tmp_10_0","currentChannel$","LoopV2FiltersComponent_ng_container_0_ng_container_1_Conditional_21_Conditional_0_Template","ctx","length","ɵɵelement","post_r19","user_r20","LoopV2FiltersComponent_ng_container_0_ng_container_1_ng_container_24_ng_container_3_Conditional_1_Template","postsData_r21","posts","_r18","loadMore","LoopV2FiltersComponent_ng_container_0_ng_container_1_ng_container_24_sales_common_loop_v2_post_2_Template","LoopV2FiltersComponent_ng_container_0_ng_container_1_ng_container_24_ng_container_3_Template","loading","loading_r22","LoopV2FiltersComponent_ng_container_0_ng_container_1_ng_container_7_Template","LoopV2FiltersComponent_ng_container_0_ng_container_1_button_8_Template","_r1","selectFilter","saveCurrentFilter","removeSavedFilter","LoopV2FiltersComponent_ng_container_0_ng_container_1_button_13_Template","LoopV2FiltersComponent_ng_container_0_ng_container_1_button_14_Template","LoopV2FiltersComponent_ng_container_0_ng_container_1_button_15_Template","LoopV2FiltersComponent_ng_container_0_ng_container_1_button_16_Template","LoopV2FiltersComponent_ng_container_0_ng_container_1_ng_container_17_Template","LoopV2FiltersComponent_ng_container_0_ng_container_1_Conditional_21_Template","LoopV2FiltersComponent_ng_container_0_ng_container_1_ng_container_24_Template","filterItems","hasFilters$","savedFilters$","loopOptions","forcedFilters","marketIds","userId","resourceFilters$","tmp_16_0","channelOptions$","postsData$","_r24","clickedPost","post_r25","LoopV2FiltersComponent_ng_container_0_ng_template_2_ng_container_0_ng_container_11_Conditional_1_Template","postsData_r26","LoopV2FiltersComponent_ng_container_0_ng_template_2_ng_container_0_sales_common_loop_v2_post_10_Template","LoopV2FiltersComponent_ng_container_0_ng_template_2_ng_container_0_ng_container_11_Template","_r23","clickedViewAll","ɵɵtextInterpolate","loadingCompact_r27","ɵɵpureFunction0","_c0","LoopV2FiltersComponent_ng_container_0_ng_template_2_ng_container_0_Template","LoopV2FiltersComponent_ng_container_0_ng_container_1_Template","LoopV2FiltersComponent_ng_container_0_ng_template_2_Template","ɵɵtemplateRefExtractor","compact","compactTemplate_r28","LoopV2FiltersComponent","constructor","dialog","service","partnerId$","iam","sessionService","individualPostClicked","EventEmitter","viewAllClicked","hasMore$","combineLatest","selectedChannel$","pipe","map","channelOptions","selectedChannel","find","o","subscriptions","loading$","posts$","resourceFilters","ngOnInit","addOrUpdateFilterItem","dateRangeFilterDisplay$","marketFilterDisplay$","salespeopleFilterDisplay$","salesTeamFilterDisplay$","digitalagentsFilterDisplay$","push","forEach","resourceFilter","getFilterDisplayForResourceFilter","subscribe","user$","getSessionId","switchMap","partnerId","session","getMultiUsers","namespacedSession","namespace","userIds","initialize","nextPage","ngOnDestroy","s","unsubscribe","filterTypeTranslateKey","value$","foundFilter","filter","item","displayName","findIndex","el","setSelectedMarket","setSelectedSalespeopleUserIds","setSelectedSalesTeam","setSelectedDigitalAgentsUserIds","setSelectedResourceFilterValues","listPosts","openDateRangeDialog","dialogRef","open","SingleSelectionDialogComponent","width","data","selected","getSelectedMarket","options","marketOptions$","placeholder","afterClosed","result","MultiSelectionDialogComponent","getSelectedSalespeopleUserIds","salespeopleOptions$","results","getSelectedDigitalAgentsUserIds","digitalagentsOptions$","getSelectedSalesTeam","salesTeamOptions$","DateRangeSelectorComponent","resourceFilterId","dialogRef$","resourceFiltersMap$","get","getSelectedresourceFilterValues","of","channel","setSelectedChannel","saveFilter","removeFilter","emit","identifier","ɵɵdirectiveInject","MatDialog","LoopV2FiltersService","IAMService","SessionService","selectors","inputs","outputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","LoopV2FiltersComponent_ng_container_0_Template","LoopV2FiltersComponent_ng_template_2_Template","LoopV2FiltersComponent_ng_template_4_Template","_LoopV2FiltersComponent","ɵɵelementContainerStart","ɵɵelement","ɵɵadvance","ɵɵproperty","post_r1","user_r2","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵtextInterpolate1","ɵɵtemplate","PostContentComponent_ng_container_0_ng_template_3_div_0_Template","ctx_r2","loading","PostContentComponent_ng_container_0_ng_container_1_Template","PostContentComponent_ng_container_0_ng_template_3_Template","ɵɵtemplateRefExtractor","PostContentComponent_ng_container_0_div_5_Template","post$","errorMessage_r4","PostContentComponent","constructor","service","partnerId$","iam","sessionService","postId","typeId","ngOnInit","user$","combineLatest","getSessionId","pipe","switchMap","partnerId","session","getMultiUsers","namespacedSession","namespace","map","userIds","getPost","catchError","err","console","error","of","finalize","ɵɵdirectiveInject","TheLoopService","IAMService","SessionService","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","PostContentComponent_ng_container_0_Template","_PostContentComponent","LoopV2Module","CommonModule","VaMultiSelectModule","MatDatepickerModule","MatCardModule","MatIconModule","MatButtonModule","MatTooltipModule","VaSearchSelectModule","VaIconModule","VaStencilsModule","EmptyStateModule","VaFormsModule","FormsModule","ReactiveFormsModule","PreferredCurrencyModule","FilterModule","TranslateModule","LexiconModule","forChild","componentName","baseTranslation","MatProgressSpinnerModule","MatFormFieldModule","MatInputModule","InfiniteScrollModule","MatMenuModule","MatDialogModule","MatAutocompleteModule","DateRangeSelectorModule","ClipboardModule","VaFilterModule","VaCardsModule","VoiceDictationModule","_LoopV2Module","BASE_URL","SALES_ACTIVITY_URLS","GET","COMMENT","REACT","import_moment","ReactionType","SalesActivityComment","constructor","commentUserName","commentProfilePictureUrl","commentText","commentCreatedDateTime","createdDate","formattedCreatedDate","interval","pipe","map","moment","utc","local","fromNow","SalesActivity","buildSalesActivityFromRaw","rawItem","translate","notes","closed_lost_reason","previous_sales_status","sales_status","sales_person_action","custom_action_name","salesperson_name","salesperson_photo","company_name","event_datetime","like_count","reactions","comments","connected","account_group_id","sales_record_id","product_name","product_price","opportunity_id","salesperson_id","last_edit_datetime","audio_key","shouldMarkConnected","action","closedLostReason","previousSalesStatus","salesStatus","salesPersonAction","customActionName","salesPersonName","salesPersonPhoto","companyName","date","likeCount","accountGroupId","salesActivityId","productName","productPrice","opportunityId","salespersonId","lastEdit","audioKey","EDIT_TIME_LIMIT_IN_WEEKS","ACTIONS","instant","meeting","ACTION_VERBS","STATUS","NOT_DELETABLE_ACTIONS","CLOSED_LOST_REASONS","price","other","formattedStatus","formattedClosedLostReason","formattedPreviousStatus","formattedAction","shouldShowAction","lastEditDatetime","r","reactionUserName","reaction_user_name","reactionUserId","reaction_user_id","reactionType","reaction_type","c","user_name","profile_picture_url","text","created","recentComments","commentsLeft","slice","length","restOfComments","setLikes","verb","formattedActionVerb","isDeletable","includes","formattedDate","addReaction","reaction","push","addComment","userName","profilePictureUrl","undefined","hasReactedTo","salesPersonId","filter","reactionText","getReactionsByType","stream","user_id","name","of","person","otherPerson","numberOfOtherPeople","reactionTooltip","reactionCount","tooltip","forEach","index","likes","LIKE","isEditable","isImpersonation","minMoment","Date","now","subtract","currentMoment","_SalesActivity","STATUS_ENUM","READY_TO_SELL","IN_PROGRESS","CLOSED_WON","CLOSED_LOST","FOLLOW_UP_NEEDED","import_moment","SalesToolHostService","constructor","environmentService","host","_host","getEnvironment","Environment","LOCAL","TEST","DEMO","PROD","ɵɵinject","EnvironmentService","factory","ɵfac","_SalesToolHostService","SalesActivityService","constructor","host","_http","translate","loggedInUserInfoService","salesActivities$$","BehaviorSubject","salesActivities$","asObservable","deserializeActivity","rawItem","SalesActivity","buildSalesActivityFromRaw","loadSalesActivities","nextUrl","filters","showActivities","Object","prototype","hasOwnProperty","call","resp","data","totalResults","processSalesActivitiesResponse","_loadSalesActivitiesRequest","subscribe","activities","map","fullsalesActivityList","getValue","salesActivities","concat","next","total","loggedInUserInfo$","pipe","switchMap","userInfo","url","rebuildNexUrl","body","SALES_ACTIVITY_URLS","GET","JSON","stringify","buildGetActivityBody","partnerId","marketId","salespersonId","doAjaxCall","catchError","error","throwError","instant","extractData","take","URL","searchParams","forEach","value","name","delete","toString","likeActivity","accountGroupId","salesActivityId","REACT","reactionType","userName","salesManagerId","commentOnActivity","commentText","COMMENT","currentSalespersonId","salesperson","accountStatus","status","actionTaken","action","opportunityId","fromDate","toDate","filteredSalespeople","undefined","length","fromDateStr","moment","parseInt","format","fromDateWithTimezone","toDateStr","add","toDateWithTimezone","res","Error","headers","HttpHeaders","post","withCredentials","ɵɵinject","SalesToolHostService","HttpClient","TranslateService","LoggedInUserInfoServiceInterfaceToken","factory","ɵfac","_SalesActivityService","GetPipelineFromIdPipe","transform","pipelineId","pipelines","findPipelineFromId","pure","_GetPipelineFromIdPipe","find","p","id","PipelineSelectorPipeModule","_PipelineSelectorPipeModule","AccountNameGetterService","constructor","accountGroupService","searchedAccounts","Map","accounts","ObservableWorkStateMap","loading$$","BehaviorSubject","loading$","asObservable","pipe","shareReplay","loadAccountIfNotLoaded","accountGroupId","has","get","startWork","getAccount$","getWorkResults$","accountLoading$","isLoading$","isAccountDeleted$","map","account","name","projectionFilter","ProjectionFilter","napData","a","set","companyName","ɵɵinject","AccountGroupService","factory","ɵfac","providedIn","_AccountNameGetterService","GetAccountNamePipe","constructor","accountNameGetterService","transform","accountGroupId","loadAccountIfNotLoaded","getAccount$","pipe","map","a","name","shareReplay","ɵɵdirectiveInject","AccountNameGetterService","pure","_GetAccountNamePipe","IsAccountDeletedPipe","isAccountDeleted$","_IsAccountDeletedPipe","IsAccountLoadingPipe","accountLoading$","_IsAccountLoadingPipe","AccountNameGetterModule","AccountNameGetterService","imports","CommonModule","_AccountNameGetterModule","DaysAgoPipe","transform","date","formatDistanceToNowStrict","locale","getLocale","addSuffix","pure","_DaysAgoPipe","DaysAgoPipeModule","CommonModule","_DaysAgoPipeModule","RED","ORANGE","GREEN","DaysAwayComponent","constructor","disableColor","coloringCriteria","duration","days","color","defaultColor","getColor","criteria","sort","a","b","milliseconds","i","Object","prototype","hasOwnProperty","call","date","add","Date","now","ngOnInit","setStyle","currentStyle","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","_DaysAwayComponent","DaysAwayModule","CommonModule","DaysAgoPipeModule","_DaysAwayModule"],"x_google_ignoreList":[11]}